<!DOCTYPE html><html lang="en-US"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,height=device-height,initial-scale=1.0"><meta name="apple-mobile-web-app-capable" content="yes"><meta http-equiv="X-UA-Compatible" content="ie=edge"><meta property="og:type" content="website"><meta name="twitter:card" content="summary"><style>@media screen{body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button{-webkit-tap-highlight-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:0;color:inherit;cursor:pointer;font-size:inherit;opacity:.8;outline:none;padding:0;transition:opacity .2s linear}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button:disabled,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button:disabled,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button:disabled{cursor:not-allowed;opacity:.15!important}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button:hover,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button:hover,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button:hover{opacity:1}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button:hover:active,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button:hover:active,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button:hover:active{opacity:.6}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button:hover:not(:disabled),body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button:hover:not(:disabled),body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button:hover:not(:disabled){transition:none}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=prev],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=prev],body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button.bespoke-marp-presenter-info-page-prev{background:transparent url("") no-repeat 50%;background-size:contain;overflow:hidden;text-indent:100%;white-space:nowrap}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=next],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=next],body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button.bespoke-marp-presenter-info-page-next{background:transparent url("") no-repeat 50%;background-size:contain;overflow:hidden;text-indent:100%;white-space:nowrap}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=fullscreen],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=fullscreen]{background:transparent url("") no-repeat 50%;background-size:contain;overflow:hidden;text-indent:100%;white-space:nowrap}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button.exit[data-bespoke-marp-osc=fullscreen],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button.exit[data-bespoke-marp-osc=fullscreen]{background-image:url("")}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=presenter],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=presenter]{background:transparent url("") no-repeat 50%;background-size:contain;overflow:hidden;text-indent:100%;white-space:nowrap}}.bespoke-marp-note,.bespoke-marp-osc,.bespoke-progress-parent{display:none;transition:none}@media screen{body,html{height:100%;margin:0}body{background:#000;overflow:hidden}svg.bespoke-marp-slide{content-visibility:hidden;opacity:0;pointer-events:none;z-index:-1}svg.bespoke-marp-slide.bespoke-marp-active{content-visibility:visible;opacity:1;pointer-events:auto;z-index:0}svg.bespoke-marp-slide.bespoke-marp-active.bespoke-marp-active-ready *{-webkit-animation-name:__bespoke_marp__!important;animation-name:__bespoke_marp__!important}@supports not (content-visibility:hidden){svg.bespoke-marp-slide[data-bespoke-marp-load=hideable]{display:none}svg.bespoke-marp-slide[data-bespoke-marp-load=hideable].bespoke-marp-active{display:block}}[data-bespoke-marp-fragment=inactive]{visibility:hidden}body[data-bespoke-view=""] .bespoke-marp-parent,body[data-bespoke-view=next] .bespoke-marp-parent{bottom:0;left:0;position:absolute;right:0;top:0}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc{background:rgba(0,0,0,.65);border-radius:7px;bottom:50px;color:#fff;contain:paint;display:block;font-family:Helvetica,Arial,sans-serif;font-size:16px;left:50%;line-height:0;opacity:1;padding:12px;position:absolute;touch-action:manipulation;transform:translateX(-50%);transition:opacity .2s linear;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;white-space:nowrap;will-change:transform;z-index:1}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>*,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>*{margin-left:6px}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>:first-child,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>:first-child{margin-left:0}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>span,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>span{opacity:.8}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>span[data-bespoke-marp-osc=page],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>span[data-bespoke-marp-osc=page]{display:inline-block;min-width:140px;text-align:center}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=fullscreen],body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=next],body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=presenter],body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=prev],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=fullscreen],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=next],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=presenter],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=prev]{height:32px;line-height:32px;width:32px}body[data-bespoke-view=""] .bespoke-marp-parent.bespoke-marp-inactive,body[data-bespoke-view=next] .bespoke-marp-parent.bespoke-marp-inactive{cursor:none}body[data-bespoke-view=""] .bespoke-marp-parent.bespoke-marp-inactive>.bespoke-marp-osc,body[data-bespoke-view=next] .bespoke-marp-parent.bespoke-marp-inactive>.bespoke-marp-osc{opacity:0;pointer-events:none}body[data-bespoke-view=""] svg.bespoke-marp-slide,body[data-bespoke-view=next] svg.bespoke-marp-slide{height:100%;left:0;position:absolute;top:0;width:100%}body[data-bespoke-view=""] .bespoke-progress-parent{background:#222;display:flex;height:5px;width:100%}body[data-bespoke-view=""] .bespoke-progress-parent+.bespoke-marp-parent{top:5px}body[data-bespoke-view=""] .bespoke-progress-parent .bespoke-progress-bar{background:#0288d1;flex:0 0 0;transition:flex-basis .2s cubic-bezier(0,1,1,1)}body[data-bespoke-view=next]{background:transparent}body[data-bespoke-view=presenter]{background:#161616}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container{display:grid;font-family:Helvetica,Arial,sans-serif;grid-template:"current next" minmax(140px,1fr) "current note" 2fr "info    note" 3em/2fr 1fr;height:100%;left:0;position:absolute;top:0;width:100%}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-parent{grid-area:current;overflow:hidden;position:relative}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-parent svg.bespoke-marp-slide{height:calc(100% - 40px);left:20px;pointer-events:none;position:absolute;top:20px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:calc(100% - 40px)}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-parent svg.bespoke-marp-slide.bespoke-marp-active{filter:drop-shadow(0 3px 10px rgba(0,0,0,.5))}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-next-container{background:#222;cursor:pointer;display:none;grid-area:next;overflow:hidden;position:relative}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-next-container.active{display:block}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-next-container iframe.bespoke-marp-presenter-next{background:transparent;border:0;display:block;filter:drop-shadow(0 3px 10px rgba(0,0,0,.5));height:calc(100% - 40px);left:20px;pointer-events:none;position:absolute;top:20px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:calc(100% - 40px)}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container{background:#222;color:#eee;grid-area:note}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note{word-wrap:break-word;box-sizing:border-box;font-size:1.1em;height:calc(100% - 40px);margin:20px;overflow:auto;padding-right:3px;scrollbar-color:hsla(0,0%,93%,.5) transparent;scrollbar-width:thin;white-space:pre-wrap;width:calc(100% - 40px)}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note::-webkit-scrollbar{width:6px}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note::-webkit-scrollbar-track{background:transparent}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note::-webkit-scrollbar-thumb{background:hsla(0,0%,93%,.5);border-radius:6px}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note:empty{pointer-events:none}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note.active{display:block}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note p:first-child{margin-top:0}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note p:last-child{margin-bottom:0}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container{align-items:center;box-sizing:border-box;color:#eee;display:flex;flex-wrap:nowrap;grid-area:info;justify-content:center;padding:0 10px}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-page,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-time,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-timer{box-sizing:border-box;display:block;padding:0 10px;white-space:nowrap;width:100%}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button{height:1.5em;line-height:1.5em;width:1.5em}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-page{order:2;text-align:center}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-page .bespoke-marp-presenter-info-page-text{display:inline-block;min-width:120px;text-align:center}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-time{color:#999;order:1;text-align:left}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-timer{color:#999;order:3;text-align:right}}@media print{.bespoke-marp-presenter-info-container,.bespoke-marp-presenter-next-container,.bespoke-marp-presenter-note-container{display:none}}</style><style>@charset "UTF-8";@import url("https://fonts.googleapis.com/css?family=Lato:400,900|Roboto+Mono:400,700&display=swap");div#p>svg>foreignObject>section{width:1280px;height:720px;box-sizing:border-box;overflow:hidden;position:relative;scroll-snap-align:center center}div#p>svg>foreignObject>section:after{bottom:0;content:attr(data-marpit-pagination);padding:inherit;pointer-events:none;position:absolute;right:0}div#p>svg>foreignObject>section:not([data-marpit-pagination]):after{display:none}/* Normalization */div#p>svg>foreignObject>section h1{font-size:2em;margin:0.67em 0}div#p>svg>foreignObject>section video::-webkit-media-controls{will-change:transform}@page{size:1280px 720px;margin:0}@media print{body,html{background-color:#fff;margin:0;page-break-inside:avoid;break-inside:avoid-page}div#p>svg>foreignObject>section{page-break-before:always;break-before:page}div#p>svg>foreignObject>section,div#p>svg>foreignObject>section *{-webkit-print-color-adjust:exact!important;animation-delay:0s!important;animation-duration:0s!important;color-adjust:exact!important;transition:none!important}div#p>svg[data-marpit-svg]{display:block;height:100vh;width:100vw}}@font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_AMS-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_AMS-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_AMS-Regular.ttf') format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Caligraphic-Bold.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Caligraphic-Bold.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Caligraphic-Bold.ttf') format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Caligraphic-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Caligraphic-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Caligraphic-Regular.ttf') format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Fraktur-Bold.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Fraktur-Bold.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Fraktur-Bold.ttf') format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Fraktur-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Fraktur-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Fraktur-Regular.ttf') format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Main-Bold.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Main-Bold.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Main-Bold.ttf') format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Main-BoldItalic.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Main-BoldItalic.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Main-BoldItalic.ttf') format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Main-Italic.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Main-Italic.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Main-Italic.ttf') format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Main-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Main-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Main-Regular.ttf') format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Math-BoldItalic.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Math-BoldItalic.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Math-BoldItalic.ttf') format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Math-Italic.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Math-Italic.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Math-Italic.ttf') format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:700;src:url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_SansSerif-Bold.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_SansSerif-Bold.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_SansSerif-Bold.ttf') format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:italic;font-weight:400;src:url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_SansSerif-Italic.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_SansSerif-Italic.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_SansSerif-Italic.ttf') format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:400;src:url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_SansSerif-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_SansSerif-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_SansSerif-Regular.ttf') format("truetype")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Script-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Script-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Script-Regular.ttf') format("truetype")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Size1-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Size1-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Size1-Regular.ttf') format("truetype")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Size2-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Size2-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Size2-Regular.ttf') format("truetype")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Size3-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Size3-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Size3-Regular.ttf') format("truetype")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Size4-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Size4-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Size4-Regular.ttf') format("truetype")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Typewriter-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Typewriter-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/fonts/KaTeX_Typewriter-Regular.ttf') format("truetype")}div#p>svg>foreignObject>section .katex{text-rendering:auto;font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0}div#p>svg>foreignObject>section .katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}div#p>svg>foreignObject>section .katex .katex-version:after{content:"0.15.1"}div#p>svg>foreignObject>section .katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}div#p>svg>foreignObject>section .katex .katex-html>.newline{display:block}div#p>svg>foreignObject>section .katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}div#p>svg>foreignObject>section .katex .base,div#p>svg>foreignObject>section .katex .strut{display:inline-block}div#p>svg>foreignObject>section .katex .textbf{font-weight:700}div#p>svg>foreignObject>section .katex .textit{font-style:italic}div#p>svg>foreignObject>section .katex .textrm{font-family:KaTeX_Main}div#p>svg>foreignObject>section .katex .textsf{font-family:KaTeX_SansSerif}div#p>svg>foreignObject>section .katex .texttt{font-family:KaTeX_Typewriter}div#p>svg>foreignObject>section .katex .mathnormal{font-family:KaTeX_Math;font-style:italic}div#p>svg>foreignObject>section .katex .mathit{font-family:KaTeX_Main;font-style:italic}div#p>svg>foreignObject>section .katex .mathrm{font-style:normal}div#p>svg>foreignObject>section .katex .mathbf{font-family:KaTeX_Main;font-weight:700}div#p>svg>foreignObject>section .katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}div#p>svg>foreignObject>section .katex .amsrm,div#p>svg>foreignObject>section .katex .mathbb,div#p>svg>foreignObject>section .katex .textbb{font-family:KaTeX_AMS}div#p>svg>foreignObject>section .katex .mathcal{font-family:KaTeX_Caligraphic}div#p>svg>foreignObject>section .katex .mathfrak,div#p>svg>foreignObject>section .katex .textfrak{font-family:KaTeX_Fraktur}div#p>svg>foreignObject>section .katex .mathtt{font-family:KaTeX_Typewriter}div#p>svg>foreignObject>section .katex .mathscr,div#p>svg>foreignObject>section .katex .textscr{font-family:KaTeX_Script}div#p>svg>foreignObject>section .katex .mathsf,div#p>svg>foreignObject>section .katex .textsf{font-family:KaTeX_SansSerif}div#p>svg>foreignObject>section .katex .mathboldsf,div#p>svg>foreignObject>section .katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}div#p>svg>foreignObject>section .katex .mathitsf,div#p>svg>foreignObject>section .katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}div#p>svg>foreignObject>section .katex .mainrm{font-family:KaTeX_Main;font-style:normal}div#p>svg>foreignObject>section .katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}div#p>svg>foreignObject>section .katex .vlist-r{display:table-row}div#p>svg>foreignObject>section .katex .vlist{display:table-cell;position:relative;vertical-align:bottom}div#p>svg>foreignObject>section .katex .vlist>span{display:block;height:0;position:relative}div#p>svg>foreignObject>section .katex .vlist>span>span{display:inline-block}div#p>svg>foreignObject>section .katex .vlist>span>.pstrut{overflow:hidden;width:0}div#p>svg>foreignObject>section .katex .vlist-t2{margin-right:-2px}div#p>svg>foreignObject>section .katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.vlist-s{--marpit-root-font-size:1px}div#p>svg>foreignObject>section .katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}div#p>svg>foreignObject>section .katex .hbox{width:100%}div#p>svg>foreignObject>section .katex .hbox,div#p>svg>foreignObject>section .katex .thinbox{display:inline-flex;flex-direction:row}div#p>svg>foreignObject>section .katex .thinbox{max-width:0;width:0}div#p>svg>foreignObject>section .katex .msupsub{text-align:left}div#p>svg>foreignObject>section .katex .mfrac>span>span{text-align:center}div#p>svg>foreignObject>section .katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}div#p>svg>foreignObject>section .katex .hdashline,div#p>svg>foreignObject>section .katex .hline,div#p>svg>foreignObject>section .katex .mfrac .frac-line,div#p>svg>foreignObject>section .katex .overline .overline-line,div#p>svg>foreignObject>section .katex .rule,div#p>svg>foreignObject>section .katex .underline .underline-line{min-height:1px}div#p>svg>foreignObject>section .katex .mspace{display:inline-block}div#p>svg>foreignObject>section .katex .clap,div#p>svg>foreignObject>section .katex .llap,div#p>svg>foreignObject>section .katex .rlap{position:relative;width:0}div#p>svg>foreignObject>section .katex .clap>.inner,div#p>svg>foreignObject>section .katex .llap>.inner,div#p>svg>foreignObject>section .katex .rlap>.inner{position:absolute}div#p>svg>foreignObject>section .katex .clap>.fix,div#p>svg>foreignObject>section .katex .llap>.fix,div#p>svg>foreignObject>section .katex .rlap>.fix{display:inline-block}div#p>svg>foreignObject>section .katex .llap>.inner{right:0}div#p>svg>foreignObject>section .katex .clap>.inner,div#p>svg>foreignObject>section .katex .rlap>.inner{left:0}div#p>svg>foreignObject>section .katex .clap>.inner>span{margin-left:-50%;margin-right:50%}div#p>svg>foreignObject>section .katex .rule{border:0 solid;display:inline-block;position:relative}div#p>svg>foreignObject>section .katex .hline,div#p>svg>foreignObject>section .katex .overline .overline-line,div#p>svg>foreignObject>section .katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}div#p>svg>foreignObject>section .katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}div#p>svg>foreignObject>section .katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size1{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size1{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size2{font-size:1.2em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size2{--marpit-root-font-size:1.2em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size3{font-size:1.4em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size3{--marpit-root-font-size:1.4em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size4{font-size:1.6em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size4{--marpit-root-font-size:1.6em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size5{font-size:1.8em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size5{--marpit-root-font-size:1.8em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size6{font-size:2em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size6{--marpit-root-font-size:2em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size7{font-size:2.4em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size7{--marpit-root-font-size:2.4em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size8{font-size:2.88em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size8{--marpit-root-font-size:2.88em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size9{font-size:3.456em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size9{--marpit-root-font-size:3.456em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size10{font-size:4.148em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size10{--marpit-root-font-size:4.148em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size11{font-size:4.976em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size11{--marpit-root-font-size:4.976em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size1{font-size:.83333333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size1{--marpit-root-font-size:.83333333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size2{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size2{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size3{font-size:1.16666667em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size3{--marpit-root-font-size:1.16666667em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size4{font-size:1.33333333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size4{--marpit-root-font-size:1.33333333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size5{font-size:1.5em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size5{--marpit-root-font-size:1.5em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size6{font-size:1.66666667em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size6{--marpit-root-font-size:1.66666667em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size7{font-size:2em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size7{--marpit-root-font-size:2em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size8{font-size:2.4em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size8{--marpit-root-font-size:2.4em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size9{font-size:2.88em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size9{--marpit-root-font-size:2.88em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size10{font-size:3.45666667em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size10{--marpit-root-font-size:3.45666667em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size11{font-size:4.14666667em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size11{--marpit-root-font-size:4.14666667em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size1{font-size:.71428571em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size1{--marpit-root-font-size:.71428571em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size2{font-size:.85714286em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size2{--marpit-root-font-size:.85714286em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size3{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size3{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size4{font-size:1.14285714em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size4{--marpit-root-font-size:1.14285714em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size5{font-size:1.28571429em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size5{--marpit-root-font-size:1.28571429em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size6{font-size:1.42857143em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size6{--marpit-root-font-size:1.42857143em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size7{font-size:1.71428571em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size7{--marpit-root-font-size:1.71428571em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size8{font-size:2.05714286em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size8{--marpit-root-font-size:2.05714286em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size9{font-size:2.46857143em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size9{--marpit-root-font-size:2.46857143em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size10{font-size:2.96285714em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size10{--marpit-root-font-size:2.96285714em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size11{font-size:3.55428571em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size11{--marpit-root-font-size:3.55428571em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size1{font-size:.625em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size1{--marpit-root-font-size:.625em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size2{font-size:.75em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size2{--marpit-root-font-size:.75em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size3{font-size:.875em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size3{--marpit-root-font-size:.875em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size4{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size4{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size5{font-size:1.125em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size5{--marpit-root-font-size:1.125em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size6{font-size:1.25em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size6{--marpit-root-font-size:1.25em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size7{font-size:1.5em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size7{--marpit-root-font-size:1.5em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size8{font-size:1.8em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size8{--marpit-root-font-size:1.8em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size9{font-size:2.16em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size9{--marpit-root-font-size:2.16em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size10{font-size:2.5925em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size10{--marpit-root-font-size:2.5925em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size11{font-size:3.11em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size11{--marpit-root-font-size:3.11em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size1{font-size:.55555556em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size1{--marpit-root-font-size:.55555556em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size2{font-size:.66666667em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size2{--marpit-root-font-size:.66666667em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size3{font-size:.77777778em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size3{--marpit-root-font-size:.77777778em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size4{font-size:.88888889em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size4{--marpit-root-font-size:.88888889em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size5{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size5{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size6{font-size:1.11111111em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size6{--marpit-root-font-size:1.11111111em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size7{font-size:1.33333333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size7{--marpit-root-font-size:1.33333333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size8{font-size:1.6em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size8{--marpit-root-font-size:1.6em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size9{font-size:1.92em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size9{--marpit-root-font-size:1.92em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size10{font-size:2.30444444em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size10{--marpit-root-font-size:2.30444444em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size11{font-size:2.76444444em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size11{--marpit-root-font-size:2.76444444em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size1{font-size:.5em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size1{--marpit-root-font-size:.5em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size2{font-size:.6em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size2{--marpit-root-font-size:.6em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size3{font-size:.7em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size3{--marpit-root-font-size:.7em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size4{font-size:.8em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size4{--marpit-root-font-size:.8em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size5{font-size:.9em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size5{--marpit-root-font-size:.9em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size6{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size6{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size7{font-size:1.2em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size7{--marpit-root-font-size:1.2em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size8{font-size:1.44em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size8{--marpit-root-font-size:1.44em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size9{font-size:1.728em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size9{--marpit-root-font-size:1.728em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size10{font-size:2.074em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size10{--marpit-root-font-size:2.074em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size11{font-size:2.488em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size11{--marpit-root-font-size:2.488em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size1{font-size:.41666667em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size1{--marpit-root-font-size:.41666667em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size2{font-size:.5em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size2{--marpit-root-font-size:.5em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size3{font-size:.58333333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size3{--marpit-root-font-size:.58333333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size4{font-size:.66666667em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size4{--marpit-root-font-size:.66666667em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size5{font-size:.75em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size5{--marpit-root-font-size:.75em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size6{font-size:.83333333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size6{--marpit-root-font-size:.83333333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size7{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size7{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size8{font-size:1.2em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size8{--marpit-root-font-size:1.2em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size9{font-size:1.44em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size9{--marpit-root-font-size:1.44em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size10{font-size:1.72833333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size10{--marpit-root-font-size:1.72833333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size11{font-size:2.07333333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size11{--marpit-root-font-size:2.07333333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size1{font-size:.34722222em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size1{--marpit-root-font-size:.34722222em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size2{font-size:.41666667em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size2{--marpit-root-font-size:.41666667em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size3{font-size:.48611111em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size3{--marpit-root-font-size:.48611111em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size4{font-size:.55555556em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size4{--marpit-root-font-size:.55555556em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size5{font-size:.625em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size5{--marpit-root-font-size:.625em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size6{font-size:.69444444em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size6{--marpit-root-font-size:.69444444em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size7{font-size:.83333333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size7{--marpit-root-font-size:.83333333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size8{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size8{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size9{font-size:1.2em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size9{--marpit-root-font-size:1.2em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size10{font-size:1.44027778em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size10{--marpit-root-font-size:1.44027778em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size11{font-size:1.72777778em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size11{--marpit-root-font-size:1.72777778em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size1{font-size:.28935185em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size1{--marpit-root-font-size:.28935185em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size2{font-size:.34722222em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size2{--marpit-root-font-size:.34722222em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size3{font-size:.40509259em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size3{--marpit-root-font-size:.40509259em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size4{font-size:.46296296em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size4{--marpit-root-font-size:.46296296em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size5{font-size:.52083333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size5{--marpit-root-font-size:.52083333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size6{font-size:.5787037em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size6{--marpit-root-font-size:.5787037em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size7{font-size:.69444444em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size7{--marpit-root-font-size:.69444444em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size8{font-size:.83333333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size8{--marpit-root-font-size:.83333333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size9{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size9{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size10{font-size:1.20023148em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size10{--marpit-root-font-size:1.20023148em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size11{font-size:1.43981481em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size11{--marpit-root-font-size:1.43981481em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size1{font-size:.24108004em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size1{--marpit-root-font-size:.24108004em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size2{font-size:.28929605em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size2{--marpit-root-font-size:.28929605em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size3{font-size:.33751205em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size3{--marpit-root-font-size:.33751205em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size4{font-size:.38572806em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size4{--marpit-root-font-size:.38572806em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size5{font-size:.43394407em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size5{--marpit-root-font-size:.43394407em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size6{font-size:.48216008em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size6{--marpit-root-font-size:.48216008em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size7{font-size:.57859209em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size7{--marpit-root-font-size:.57859209em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size8{font-size:.69431051em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size8{--marpit-root-font-size:.69431051em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size9{font-size:.83317261em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size9{--marpit-root-font-size:.83317261em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size10{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size10{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size11{font-size:1.19961427em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size11{--marpit-root-font-size:1.19961427em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size1{font-size:.20096463em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size1{--marpit-root-font-size:.20096463em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size2{font-size:.24115756em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size2{--marpit-root-font-size:.24115756em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size3{font-size:.28135048em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size3{--marpit-root-font-size:.28135048em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size4{font-size:.32154341em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size4{--marpit-root-font-size:.32154341em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size5{font-size:.36173633em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size5{--marpit-root-font-size:.36173633em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size6{font-size:.40192926em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size6{--marpit-root-font-size:.40192926em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size7{font-size:.48231511em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size7{--marpit-root-font-size:.48231511em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size8{font-size:.57877814em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size8{--marpit-root-font-size:.57877814em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size9{font-size:.69453376em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size9{--marpit-root-font-size:.69453376em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size10{font-size:.83360129em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size10{--marpit-root-font-size:.83360129em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size11{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size11{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .delimsizing.size1{font-family:KaTeX_Size1}div#p>svg>foreignObject>section .katex .delimsizing.size2{font-family:KaTeX_Size2}div#p>svg>foreignObject>section .katex .delimsizing.size3{font-family:KaTeX_Size3}div#p>svg>foreignObject>section .katex .delimsizing.size4{font-family:KaTeX_Size4}div#p>svg>foreignObject>section .katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}div#p>svg>foreignObject>section .katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}div#p>svg>foreignObject>section .katex .nulldelimiter{display:inline-block;width:.12em}div#p>svg>foreignObject>section .katex .delimcenter,div#p>svg>foreignObject>section .katex .op-symbol{position:relative}div#p>svg>foreignObject>section .katex .op-symbol.small-op{font-family:KaTeX_Size1}div#p>svg>foreignObject>section .katex .op-symbol.large-op{font-family:KaTeX_Size2}div#p>svg>foreignObject>section .katex .accent>.vlist-t,div#p>svg>foreignObject>section .katex .op-limits>.vlist-t{text-align:center}div#p>svg>foreignObject>section .katex .accent .accent-body{position:relative}div#p>svg>foreignObject>section .katex .accent .accent-body:not(.accent-full){width:0}div#p>svg>foreignObject>section .katex .overlay{display:block}div#p>svg>foreignObject>section .katex .mtable .vertical-separator{display:inline-block;min-width:1px}div#p>svg>foreignObject>section .katex .mtable .arraycolsep{display:inline-block}div#p>svg>foreignObject>section .katex .mtable .col-align-c>.vlist-t{text-align:center}div#p>svg>foreignObject>section .katex .mtable .col-align-l>.vlist-t{text-align:left}div#p>svg>foreignObject>section .katex .mtable .col-align-r>.vlist-t{text-align:right}div#p>svg>foreignObject>section .katex .svg-align{text-align:left}div#p>svg>foreignObject>section .katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}div#p>svg>foreignObject>section .katex svg path{stroke:none}div#p>svg>foreignObject>section .katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}div#p>svg>foreignObject>section .katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}div#p>svg>foreignObject>section .katex .stretchy:after,div#p>svg>foreignObject>section .katex .stretchy:before{content:""}div#p>svg>foreignObject>section .katex .hide-tail{overflow:hidden;position:relative;width:100%}div#p>svg>foreignObject>section .katex .halfarrow-left{left:0}div#p>svg>foreignObject>section .katex .halfarrow-left,div#p>svg>foreignObject>section .katex .halfarrow-right{overflow:hidden;position:absolute;width:50.2%}div#p>svg>foreignObject>section .katex .halfarrow-right{right:0}div#p>svg>foreignObject>section .katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}div#p>svg>foreignObject>section .katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}div#p>svg>foreignObject>section .katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}div#p>svg>foreignObject>section .katex .x-arrow-pad{padding:0 .5em}div#p>svg>foreignObject>section .katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}div#p>svg>foreignObject>section .katex .mover,div#p>svg>foreignObject>section .katex .munder,div#p>svg>foreignObject>section .katex .x-arrow{text-align:center}div#p>svg>foreignObject>section .katex .boxpad{padding:0 .3em}div#p>svg>foreignObject>section .katex .fbox,div#p>svg>foreignObject>section .katex .fcolorbox{border:.04em solid;box-sizing:border-box}div#p>svg>foreignObject>section .katex .cancel-pad{padding:0 .2em}div#p>svg>foreignObject>section .katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}div#p>svg>foreignObject>section .katex .sout{border-bottom-style:solid;border-bottom-width:.08em}div#p>svg>foreignObject>section .katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}div#p>svg>foreignObject>section .katex .anglpad{padding:0 .03889em}div#p>svg>foreignObject>section .katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}div#p>svg>foreignObject>section .katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}div#p>svg>foreignObject>section .katex .mtr-glue{width:50%}div#p>svg>foreignObject>section .katex .cd-vert-arrow{display:inline-block;position:relative}div#p>svg>foreignObject>section .katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}div#p>svg>foreignObject>section .katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}div#p>svg>foreignObject>section .katex-display{display:block;margin:1em 0;text-align:center}div#p>svg>foreignObject>section .katex-display>.katex{display:block;text-align:center;white-space:nowrap}div#p>svg>foreignObject>section .katex-display>.katex>.katex-html{display:block;position:relative}div#p>svg>foreignObject>section .katex-display>.katex>.katex-html>.tag{position:absolute;right:0}div#p>svg>foreignObject>section .katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}div#p>svg>foreignObject>section .katex-display.fleqn>.katex{padding-left:2em;text-align:left}div#p>svg>foreignObject>section body{counter-reset:katexEqnNo mmlEqnNo}div#p>svg>foreignObject>section .katex-display{margin:0}div#p>svg>foreignObject>section svg[data-marp-fitting-math]{--preserve-aspect-ratio:xMidYMid meet}div#p>svg>foreignObject>section svg[data-marp-fitting-math] [data-marp-fitting-svg-content]{margin:0 auto}div#p>svg>foreignObject>section svg[data-marp-fitting=svg]{display:block;height:auto;width:100%}@supports (-ms-ime-align:auto){div#p>svg>foreignObject>section svg[data-marp-fitting=svg]{position:static}}div#p>svg>foreignObject>section svg[data-marp-fitting=svg].__reflow__{content:""}@supports (-ms-ime-align:auto){div#p>svg>foreignObject>section svg[data-marp-fitting=svg].__reflow__{position:relative}}div#p>svg>foreignObject>section [data-marp-fitting-svg-content]{display:table;white-space:nowrap;width:-webkit-max-content;width:-moz-max-content;width:max-content}div#p>svg>foreignObject>section [data-marp-fitting-svg-content-wrap]{white-space:pre}div#p>svg>foreignObject>section img[data-marp-twemoji]{background:transparent;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em;width:1em}
/*!
 * Marp / Marpit Gaia theme.
 *
 * @theme gaia
 * @author Yuki Hattori
 *
 * @auto-scaling true
 * @size 16:9 1280px 720px
 * @size 4:3 960px 720px
 */div#p>svg>foreignObject>section .hljs{background:#000;color:#f8f8f8;display:block;overflow-x:auto;padding:.5em}div#p>svg>foreignObject>section .hljs-comment,div#p>svg>foreignObject>section .hljs-quote{color:#aeaeae;font-style:italic}div#p>svg>foreignObject>section .hljs-keyword,div#p>svg>foreignObject>section .hljs-selector-tag,div#p>svg>foreignObject>section .hljs-type{color:#e28964}div#p>svg>foreignObject>section .hljs-string{color:#65b042}div#p>svg>foreignObject>section .hljs-subst{color:#daefa3}div#p>svg>foreignObject>section .hljs-link,div#p>svg>foreignObject>section .hljs-regexp{color:#e9c062}div#p>svg>foreignObject>section .hljs-name,div#p>svg>foreignObject>section .hljs-section,div#p>svg>foreignObject>section .hljs-tag,div#p>svg>foreignObject>section .hljs-title{color:#89bdff}div#p>svg>foreignObject>section .hljs-class .hljs-title,div#p>svg>foreignObject>section .hljs-doctag{text-decoration:underline}div#p>svg>foreignObject>section .hljs-bullet,div#p>svg>foreignObject>section .hljs-number,div#p>svg>foreignObject>section .hljs-symbol{color:#3387cc}div#p>svg>foreignObject>section .hljs-params,div#p>svg>foreignObject>section .hljs-template-variable,div#p>svg>foreignObject>section .hljs-variable{color:#3e87e3}div#p>svg>foreignObject>section .hljs-attribute{color:#cda869}div#p>svg>foreignObject>section .hljs-meta{color:#8996a8}div#p>svg>foreignObject>section .hljs-formula{background-color:#0e2231;color:#f8f8f8;font-style:italic}div#p>svg>foreignObject>section .hljs-addition{background-color:#253b22;color:#f8f8f8}div#p>svg>foreignObject>section .hljs-deletion{background-color:#420e09;color:#f8f8f8}div#p>svg>foreignObject>section .hljs-selector-class{color:#9b703f}div#p>svg>foreignObject>section .hljs-selector-id{color:#8b98ab}div#p>svg>foreignObject>section .hljs-emphasis{font-style:italic}div#p>svg>foreignObject>section .hljs-strong{font-weight:700}div#p>svg>foreignObject>section svg[data-marp-fitting=svg]{max-height:580px}div#p>svg>foreignObject>section h1,div#p>svg>foreignObject>section h2,div#p>svg>foreignObject>section h3,div#p>svg>foreignObject>section h4,div#p>svg>foreignObject>section h5,div#p>svg>foreignObject>section h6{margin:.5em 0 0}div#p>svg>foreignObject>section h1 strong,div#p>svg>foreignObject>section h2 strong,div#p>svg>foreignObject>section h3 strong,div#p>svg>foreignObject>section h4 strong,div#p>svg>foreignObject>section h5 strong,div#p>svg>foreignObject>section h6 strong{font-weight:inherit}div#p>svg>foreignObject>section h1{font-size:1.8em}div#p>svg>foreignObject>section h2{font-size:1.5em}div#p>svg>foreignObject>section h3{font-size:1.3em}div#p>svg>foreignObject>section h4{font-size:1.1em}div#p>svg>foreignObject>section h5{font-size:1em}div#p>svg>foreignObject>section h6{font-size:.9em}div#p>svg>foreignObject>section blockquote,div#p>svg>foreignObject>section p{margin:1em 0 0}div#p>svg>foreignObject>section ol>li,div#p>svg>foreignObject>section ul>li{margin:.3em 0 0}div#p>svg>foreignObject>section ol>li>p,div#p>svg>foreignObject>section ul>li>p{margin:.6em 0 0}div#p>svg>foreignObject>section code{display:inline-block;font-family:Roboto Mono,monospace;font-size:.8em;letter-spacing:0;margin:-.1em .15em;padding:.1em .2em;vertical-align:baseline}div#p>svg>foreignObject>section pre{display:block;margin:1em 0 0;min-height:1em;overflow:visible}div#p>svg>foreignObject>section pre code{box-sizing:border-box;font-size:.7em;margin:0;min-width:100%;padding:.5em}div#p>svg>foreignObject>section pre code svg[data-marp-fitting=svg]{max-height:calc(580px - 1em)}div#p>svg>foreignObject>section blockquote{margin:1em 0 0;padding:0 1em;position:relative}div#p>svg>foreignObject>section blockquote:after,div#p>svg>foreignObject>section blockquote:before{content:"“";display:block;font-family:Times New Roman,serif;font-weight:700;position:absolute}div#p>svg>foreignObject>section blockquote:before{left:0;top:0}div#p>svg>foreignObject>section blockquote:after{bottom:0;right:0;transform:rotate(180deg)}div#p>svg>foreignObject>section blockquote>:first-child{margin-top:0}div#p>svg>foreignObject>section mark{background:transparent}div#p>svg>foreignObject>section table{border-collapse:collapse;border-spacing:0;margin:1em 0 0}div#p>svg>foreignObject>section table td,div#p>svg>foreignObject>section table th{border-style:solid;border-width:1px;padding:.2em .4em}div#p>svg>foreignObject>section:after,div#p>svg>foreignObject>section footer,div#p>svg>foreignObject>section header{box-sizing:border-box;font-size:66%;height:70px;line-height:50px;overflow:hidden;padding:10px 25px;position:absolute}div#p>svg>foreignObject>section:after{--marpit-root-font-size:66%}div#p>svg>foreignObject>section header{top:0}div#p>svg>foreignObject>section footer,div#p>svg>foreignObject>section header{left:0;right:0}div#p>svg>foreignObject>section footer{bottom:0}div#p>svg>foreignObject>section{word-wrap:break-word;--color-background:#fff8e1;--color-background-stripe:rgba(69,90,100,.1);--color-foreground:#455a64;--color-dimmed:#6a7a7d;--color-highlight:#0288d1;background-color:var(--color-background);background-image:linear-gradient(135deg,hsla(0,0%,53%,0),hsla(0,0%,53%,.02) 50%,hsla(0,0%,100%,0) 0,hsla(0,0%,100%,.05));color:var(--color-foreground);font-family:Lato,Avenir Next,Avenir,Trebuchet MS,Segoe UI,sans-serif;font-size:35px;height:720px;letter-spacing:1.25px;line-height:1.35;padding:70px;width:1280px}div#p>svg>foreignObject>section{--marpit-root-font-size:35px}div#p>svg>foreignObject>section:after{bottom:0;font-size:80%;right:0}div#p>svg>foreignObject>section:after{--marpit-root-font-size:80%}div#p>svg>foreignObject>section a,div#p>svg>foreignObject>section mark{color:var(--color-highlight)}div#p>svg>foreignObject>section code{background:var(--color-dimmed);color:var(--color-background)}div#p>svg>foreignObject>section h1 strong,div#p>svg>foreignObject>section h2 strong,div#p>svg>foreignObject>section h3 strong,div#p>svg>foreignObject>section h4 strong,div#p>svg>foreignObject>section h5 strong,div#p>svg>foreignObject>section h6 strong{color:var(--color-highlight)}div#p>svg>foreignObject>section pre>code{background:var(--color-foreground)}div#p>svg>foreignObject>section blockquote:after,div#p>svg>foreignObject>section blockquote:before,div#p>svg>foreignObject>section footer,div#p>svg>foreignObject>section header,div#p>svg>foreignObject>section section:after{color:var(--color-dimmed)}div#p>svg>foreignObject>section table td,div#p>svg>foreignObject>section table th{border-color:var(--color-foreground)}div#p>svg>foreignObject>section table thead th{background:var(--color-foreground);color:var(--color-background)}div#p>svg>foreignObject>section table tbody>tr:nth-child(odd) td,div#p>svg>foreignObject>section table tbody>tr:nth-child(odd) th{background:var(--color-background-stripe,transparent)}div#p>svg>foreignObject>section>:first-child,div#p>svg>foreignObject>section>header:first-child+*{margin-top:0}div#p>svg>foreignObject>section.invert{--color-background:#455a64;--color-background-stripe:rgba(255,248,225,.1);--color-foreground:#fff8e1;--color-dimmed:#dad8c8;--color-highlight:#81d4fa}div#p>svg>foreignObject>section.gaia{--color-background:#0288d1;--color-background-stripe:rgba(255,248,225,.1);--color-foreground:#fff8e1;--color-dimmed:#cce2de;--color-highlight:#81d4fa}div#p>svg>foreignObject>section.lead{display:flex;flex-flow:column nowrap;justify-content:center}div#p>svg>foreignObject>section.lead h1,div#p>svg>foreignObject>section.lead h2,div#p>svg>foreignObject>section.lead h3,div#p>svg>foreignObject>section.lead h4,div#p>svg>foreignObject>section.lead h5,div#p>svg>foreignObject>section.lead h6{text-align:center}div#p>svg>foreignObject>section.lead h1 svg[data-marp-fitting=svg],div#p>svg>foreignObject>section.lead h2 svg[data-marp-fitting=svg],div#p>svg>foreignObject>section.lead h3 svg[data-marp-fitting=svg],div#p>svg>foreignObject>section.lead h4 svg[data-marp-fitting=svg],div#p>svg>foreignObject>section.lead h5 svg[data-marp-fitting=svg],div#p>svg>foreignObject>section.lead h6 svg[data-marp-fitting=svg]{--preserve-aspect-ratio:xMidYMid meet}div#p>svg>foreignObject>section.lead p{text-align:center}div#p>svg>foreignObject>section.lead blockquote>h1,div#p>svg>foreignObject>section.lead blockquote>h2,div#p>svg>foreignObject>section.lead blockquote>h3,div#p>svg>foreignObject>section.lead blockquote>h4,div#p>svg>foreignObject>section.lead blockquote>h5,div#p>svg>foreignObject>section.lead blockquote>h6,div#p>svg>foreignObject>section.lead blockquote>p{text-align:left}div#p>svg>foreignObject>section.lead blockquote svg[data-marp-fitting=svg]:not([data-marp-fitting-math]){--preserve-aspect-ratio:xMinYMin meet}div#p>svg>foreignObject>section.lead ol>li>p,div#p>svg>foreignObject>section.lead ul>li>p{text-align:left}div#p>svg>foreignObject>section.lead table{margin-left:auto;margin-right:auto}div#p>svg>foreignObject>section{width:1280px;height:720px}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]{columns:initial!important;display:block!important;padding:0!important}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]:after,div#p>svg>foreignObject>section[data-marpit-advanced-background=background]:before,div#p>svg>foreignObject>section[data-marpit-advanced-background=content]:after,div#p>svg>foreignObject>section[data-marpit-advanced-background=content]:before{display:none!important}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]{all:initial;display:flex;flex-direction:row;height:100%;overflow:hidden;width:100%}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container][data-marpit-advanced-background-direction=vertical]{flex-direction:column}div#p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split]>div[data-marpit-advanced-background-container]{width:var(--marpit-advanced-background-split,50%)}div#p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split=right]>div[data-marpit-advanced-background-container]{margin-left:calc(100% - var(--marpit-advanced-background-split, 50%))}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure{all:initial;background-position:center;background-repeat:no-repeat;background-size:cover;flex:auto;margin:0}div#p>svg>foreignObject>section[data-marpit-advanced-background=content],div#p>svg>foreignObject>section[data-marpit-advanced-background=pseudo]{background:transparent!important}div#p>svg>foreignObject>section[data-marpit-advanced-background=pseudo],div#p>svg[data-marpit-svg]>foreignObject[data-marpit-advanced-background=pseudo]{pointer-events:none!important}div#p>svg>foreignObject>section[data-marpit-advanced-background-split]{width:100%;height:100%}</style></head><body><div class="bespoke-marp-osc"><button data-bespoke-marp-osc="prev" tabindex="-1" title="Previous slide">Previous slide</button><span data-bespoke-marp-osc="page"></span><button data-bespoke-marp-osc="next" tabindex="-1" title="Next slide">Next slide</button><button data-bespoke-marp-osc="fullscreen" tabindex="-1" title="Toggle fullscreen (f)">Toggle fullscreen</button><button data-bespoke-marp-osc="presenter" tabindex="-1" title="Open presenter view (p)">Open presenter view</button></div><div id="p"><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="1" data-class="lead" data-background-color="White" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="lead" style="--class:lead;--background-color:White;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;background-color:White;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>

<h1>Operating Environment使用环境</h1>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="2" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>

<ol>
<li><a href="#cli-and-gui"><code>CLI</code> and <code>GUI</code></a></li>
<li><a href="#shell"><code>Shell</code></a></li>
<li><a href="#package-managers">Package Managers</a></li>
<li><a href="#editors">Editors</a></li>
<li><a href="#information-and-help">Information and Help</a></li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="3" data-class="lead" data-background-color="FloralWhite" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="lead" style="--class:lead;--background-color:FloralWhite;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;background-color:FloralWhite;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>

<h2><code>CLI</code> and <code>GUI</code></h2>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="4" data-class="lead" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="lead" style="--class:lead;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;" data-size="16:9">
<header><em>Operating Environment</em></header>

<h3><code>CLI</code></h3>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="5" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h4>物理<code>terminal</code>/<code>tty(teletypes/teletypewriter)</code>/<code>text input/output environment</code></h4>
<ol>
<li><code>CLI</code>也称为字符界面，<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mtext>CLI</mtext><mo>≈</mo><mtext>terminal</mtext><mo>+</mo><mtext>shell</mtext></mrow><annotation encoding="application/x-tex">\text{CLI} \approx \text{terminal} + \text{shell}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6833em;"></span><span class="mord text"><span class="mord">CLI</span></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">≈</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:0.7778em;vertical-align:-0.0833em;"></span><span class="mord text"><span class="mord">terminal</span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:0.6944em;"></span><span class="mord text"><span class="mord">shell</span></span></span></span></span></li>
<li><code>terminal</code>：阅读和发送信息的设备/输入输出设备，穿孔卡和打印机，打字机和打印机
<ol>
<li><code>console</code>：一种特殊的<code>terminal</code>（输入输出环境与主机直接相联），早期为系统管理员专用的一种<code>terminal</code>，<code>Linux Distro</code>一般允许同时打开6个虚拟控制台（<code>Virtual Console</code>）和1个图形桌面（<code>Ubuntu 18.04</code>后不太一样）</li>
</ol>
</li>
<li><code>DEC VT100/VT102</code>，<code>DEC VT220</code>，<code>xterm</code>, <code>pterm</code>, <code>wyse60</code>, <code>ansi</code>, <code>ansi-bbs</code></li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="6" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<p><img src="./.assets/image/Punched_card_program_deck.agr.jpg" alt="" style="height:600px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="7" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<p><img src="./.assets/image/real_teletypes_in_the_1940s.jpg" alt="" style="height:540px;" /></p>
<blockquote>
<p><a href="http://www.linusakesson.net/programming/tty/index.php">The TTY demystified</a></p>
</blockquote>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="8" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<ol>
<li><code>Teletype Model 33</code>：只能输出大写字母，每秒10个字符</li>
<li><code>Teletype Model 37</code>：能输出大小写字母，每秒15个字符</li>
<li><code>UNIX</code>中许多命令都很短，原因之一是<code>Model 33</code>输入非常费力，而且输出速度太慢</li>
</ol>
<blockquote>
<p>UNIX 传奇：历史与回忆. 55-55.</p>
</blockquote>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="9" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<p><img src="./.assets/image/Teletype_Model_33.jpg" alt="" style="height:600px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="10" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<p><img src="./.assets/image/Teletype_Model_37.jpg" alt="" style="height:600px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="11" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h4>仿真<code>terminal</code>/<code>pty(pseudo-tty)</code></h4>
<ol>
<li><code>pty</code>的组成
<ol>
<li><code>pts(pseudo-terminal slave)</code></li>
<li><code>ptmx(pseudo-terminal master)</code></li>
</ol>
</li>
<li>常用的<code>pty</code>
<ol>
<li><code>GUI</code>的<code>tty window</code></li>
<li><code>text mode</code></li>
<li><code>remote tty</code></li>
</ol>
</li>
</ol>
<blockquote>
<p><a href="https://blog.csdn.net/taiyangdao/article/details/53166266">易生一世. 连接Linux服务器的终端仿真软件的termianl type详解</a></p>
</blockquote>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="12" data-class="lead" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="lead" style="--class:lead;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;" data-size="16:9">
<header><em>Operating Environment</em></header>

<h3><code>GUI</code></h3>
<ol>
<li>server: <code>X Window System</code>/<code>X11</code>/<code>X</code></li>
<li>client:
<ol>
<li>window manager: <code>Fvwm</code>, <code>IceWM</code></li>
<li>desktop environment: <code>GNOME</code>(<code>GTK+</code>), <code>KDE</code>(<code>QT</code>), <code>XFace</code></li>
</ol>
</li>
</ol>
<blockquote>
<ol>
<li><a href="https://wiki.debian.org/WindowManager">Debian Wiki.WindowManager</a></li>
</ol>
</blockquote>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="13" data-class="lead" data-background-color="FloralWhite" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="lead" style="--class:lead;--background-color:FloralWhite;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;background-color:FloralWhite;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>

<h2><code>Shell</code></h2>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="14" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<p><img src="./.assets/image/unix_system_architecture_02.jpg" alt="" style="height:600px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="15" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<p><img src="./.assets/image/pty_shell_in_a_telnet_session.png" alt="" style="width:1120px;" /></p>
<blockquote>
<p><a href="http://www.rkoucha.fr/tech_corner/pty_pdip.html">R. Koucha. Using pseudo-terminals (pty) to control interactive programs</a></p>
</blockquote>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="16" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h3><code>Shell</code>是什么</h3>
<ol>
<li><code>shell</code>是用户级程序，非<code>OS core</code></li>
<li><code>shell</code>是一个命令解释器，<code>shell</code>是对用户提出的运行程序的请求进行解释的程序</li>
<li><code>shell</code>拥有内建的命令集</li>
<li><code>shell script</code>将命令流程保存在文件中以供多次执行</li>
</ol>
<blockquote>
<ol>
<li>UNIX传奇：历史与回忆. 107-107.</li>
<li>UNIX编程环境. 51-51.</li>
</ol>
</blockquote>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="17" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h3><code>shell</code>命令的基本语法</h3>
<ol>
<li><code>shell</code>命令的语法：<code>command [sub-command]* [options]* [arguments]*</code></li>
<li><code>shell</code>命令的各元素均区分大小写</li>
<li><code>shell</code>的结束符有<code>\n</code>（交互式<code>CLI</code>时是<code>&lt;ENTER&gt;</code>）、<code>;</code>、<code>&amp;</code>，但通常只有<code>\n</code>后命令才开始执行</li>
</ol>
<blockquote>
<ol>
<li><a href="https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html">Utility Argument Syntax.</a></li>
<li>UNIX编程环境. 51-52.</li>
</ol>
</blockquote>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="18" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<ol>
<li><code>shell</code>命令选项的语法
<ul>
<li><code>-</code>后一般跟短选项（通常为单字符选项，且通常多个单字符选项可合并）</li>
<li><code>--</code>后一般跟长选项（通常为短选项对应的全称选项）</li>
<li>如果<code>--</code>后跟空白字符，则表示选项结束，空白字符后的字符作为命令参数而不是命令选项</li>
</ul>
</li>
</ol>
<blockquote>
<p><code>--     Do not interpret any more arguments as options.</code></p>
<p>eg: <code>git checkout -- filename</code></p>
<p><code>git checkout -- filename</code></p>
</blockquote>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="19" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h3><code>Shell</code>的类型</h3>
<ol>
<li><code>AT&amp;T</code>
<ol>
<li><code>Bourne shell</code>/<code>sh</code>：控制流语法基于<code>ALGOL 68</code></li>
<li><img class="emoji" draggable="false" alt="🌟" src="https://twemoji.maxcdn.com/2/svg/1f31f.svg" data-marp-twemoji=""/> <code>GNU/bash(Bourne Again SH)</code></li>
<li><code>dash(Debian Almquist Shell)</code>: <code>/bin/sh -&gt; dash*</code></li>
<li><code>ksh(Korn SHell)</code></li>
<li><img class="emoji" draggable="false" alt="🌟" src="https://twemoji.maxcdn.com/2/svg/1f31f.svg" data-marp-twemoji=""/> <code>zsh(Z SHell)</code>/<code>oh-my-zsh</code></li>
</ol>
</li>
<li><code>BSD</code>
<ol>
<li><code>csh(C SHell)</code></li>
</ol>
</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="20" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h3>切换<code>Shell</code></h3>
<pre><code class="language-sh"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap><span class="hljs-comment"># show user default login shell</span>
<span class="hljs-comment"># attention, it may not be change even when you switch shell through &lt;shell_name&gt;</span>
<span class="hljs-built_in">echo</span> <span class="hljs-variable">$SHELL</span>

<span class="hljs-comment"># show current shell</span>
<span class="hljs-built_in">echo</span> <span class="hljs-variable">$0</span>

<span class="hljs-comment"># list available shells</span>
cat /etc/shells

<span class="hljs-comment"># temporary switch shell</span>
&lt;shell-name&gt;

<span class="hljs-comment"># change login shell, need to re-login or switch shell</span>
chsh -s &lt;shell_full_path&gt; &lt;username&gt;
usermod -s &lt;shell_full_path&gt; &lt;username&gt;
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="21" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h3><code>bash</code>的基本用法</h3>
<ol>
<li>文件结束符<code>EOF(End Of File)</code>：<code>&lt;ctrl&gt; + &lt;d&gt;</code>发送<code>EOF</code></li>
<li>命令历史：<code>history</code>, <code>!{cmd-history-id}</code>
<ol>
<li><code>~/.bash_history</code></li>
<li><code>HISTSIZE</code>, <code>HISTFILESIZE</code></li>
</ol>
</li>
<li>自动补全：<code>&lt;tab&gt;</code></li>
<li>别名：<code>alias</code></li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="22" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<ol>
<li>字符串：
<ol>
<li><code>单引号(')</code>：普通字符串</li>
<li><code>双引号(&quot;)</code>：<code>$</code>、<code>\</code>、<code>'</code>和<code>&quot;</code>作为特殊字符并保留其特殊功能，其他都视为普通字符</li>
<li><code>反引号(`)</code>：以字符串作为命令进行执行，执行结果作为最终结果</li>
</ol>
</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="23" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h3><code>Command Substitution</code>命令替换</h3>
<ol>
<li><code>反引号(`)</code></li>
<li><code>$(...)</code>
<ul>
<li>与<code>反引号(`)</code>的主要区别：<code>$(...)</code>易读、易嵌套</li>
</ul>
</li>
<li><code>eval</code>：二次扫描，如果第一遍扫描后，是个普通命令，则执行，如果仍含有变量的间接引用， 则对变量进行解引用</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="24" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h3>环境变量</h3>
<ul>
<li>环境变量用于存储<code>shell</code>会话和工作环境的信息，命令、脚本或程序可通过环境变量获取系统信息、存取数据和配置信息</li>
<li>环境变量一般采用<code>下划线风格</code>的全大写字母形式，以区别于其他类型的变量</li>
</ul>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="25" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<pre><code class="language-sh"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap><span class="hljs-built_in">echo</span> <span class="hljs-variable">$PATH</span>
<span class="hljs-built_in">echo</span> <span class="hljs-variable">$HOME</span>
<span class="hljs-built_in">echo</span> <span class="hljs-variable">$LOGNAME</span>
<span class="hljs-built_in">echo</span> <span class="hljs-variable">$HOSTNAME</span>
<span class="hljs-built_in">echo</span> <span class="hljs-variable">$PS1</span>
<span class="hljs-built_in">echo</span> <span class="hljs-variable">$SHELL</span>

<span class="hljs-comment"># show all environment variables</span>
env
printenv
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="26" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<pre><code class="language-sh"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap><span class="hljs-built_in">echo</span> <span class="hljs-variable">$PS1</span>   <span class="hljs-comment"># 命令提示符</span>
<span class="hljs-built_in">echo</span> <span class="hljs-variable">$PS2</span>   <span class="hljs-comment"># 命令续行提示符（续行输入反斜杠，续行结束输入&lt;ctrl&gt; + &lt;d&gt;）</span>
<span class="hljs-built_in">echo</span> <span class="hljs-variable">$PS3</span>   <span class="hljs-comment"># 选择菜单提示符</span>
<span class="hljs-built_in">echo</span> <span class="hljs-variable">$PS4</span>   <span class="hljs-comment"># &lt;shell_name&gt; -x &lt;script_name&gt;时的提示符</span>
</span></span></foreignObject></svg></code></pre>
<blockquote>
<p><a href="https://wangdoc.com/bash/prompt.html">阮一峰. 命令提示符(DB/OL).</a></p>
</blockquote>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="27" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h3><code>shell</code>的工作模式</h3>
<ol>
<li><code>interactive shell</code>：与<code>terminal</code>交互，在命令提示符下输命令的<code>shell</code></li>
<li><code>non-interactive shell</code></li>
<li><code>login shell</code>：输入用户名和密码登陆的<code>shell</code></li>
<li><code>non-login shell</code></li>
</ol>
<blockquote>
<p><a href="https://wangdoc.com/bash/startup.html">Bash 启动环境</a></p>
</blockquote>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="28" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<ol>
<li><code>login</code> + <code>interactive</code>
<ol>
<li>虚拟控制台登录获取的第一个<code>shell</code></li>
<li><code>ssh</code>登陆获取的<code>shell</code></li>
<li><code>bash -l</code>切换的<code>shell</code></li>
<li><code>su -l</code>切换用户的<code>shell</code></li>
</ol>
</li>
<li><code>login</code> + <code>non-interactive</code>
<ol>
<li>通过<code>bash -l</code>运行的<code>script.sh</code></li>
</ol>
</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="29" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<ol>
<li><code>non-login</code> + <code>interactive</code>
<ol>
<li>通过<code>bash</code>切换的<code>shell</code></li>
<li><code>GUI</code>下启动的<code>terminal</code>中的<code>shell</code></li>
<li><code>su</code>切换用户的<code>shell</code></li>
</ol>
</li>
<li><code>non-login</code> + <code>non-interactive</code>
<ol>
<li>运行<code>script.sh</code></li>
</ol>
</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="30" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<pre><code class="language-sh"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap><span class="hljs-keyword">if</span> [[ $- =~ i ]]; <span class="hljs-keyword">then</span>
    <span class="hljs-built_in">echo</span> <span class="hljs-string">&quot;interactive shell&quot;</span>
<span class="hljs-keyword">else</span>
    <span class="hljs-built_in">echo</span> <span class="hljs-string">&quot;non-interactive shell&quot;</span>
<span class="hljs-keyword">fi</span>

<span class="hljs-keyword">if</span> [[ $(<span class="hljs-built_in">shopt</span> login_shell) =~ on$ ]]; <span class="hljs-keyword">then</span>
    <span class="hljs-built_in">echo</span> <span class="hljs-string">&quot;login bash shell&quot;</span>
<span class="hljs-keyword">else</span>
    <span class="hljs-built_in">echo</span> <span class="hljs-string">&quot;non-login bash shell&quot;</span>
<span class="hljs-keyword">fi</span>
</span></span></foreignObject></svg></code></pre>
<ol>
<li><a href="https://zhuanlan.zhihu.com/p/47819029">韦易笑.千万别混淆 Bash/Zsh 的四种运行模式(DB/OL).</a></li>
<li><a href="http://hazirguo.github.io/articles/2017/bash_login_interactive_mode.html">HailinGuo. bash 四种工作模式及其相关的配置文件(DB/OL).</a></li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="31" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<p><img src="./.assets/image/BashStartupFiles.png" alt="" style="height:540px;" /></p>
<p><a href="http://www.solipsys.co.uk/new/BashInitialisationFiles.html">Bash Initialisation Files</a></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="32" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<p><img src="./.assets/image/vim_home_profile.png" alt="" style="height:600px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="33" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<p><img src="./.assets/image/vim_home_bashrc.png" alt="" style="height:600px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="34" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<pre><code class="language-sh"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap><span class="hljs-keyword">if</span> [ -n <span class="hljs-string">&quot;<span class="hljs-variable">$BASH_ENV</span>&quot;</span> ]; <span class="hljs-keyword">then</span> 
    . <span class="hljs-string">&quot;<span class="hljs-variable">$BASH_ENV</span>&quot;</span>
<span class="hljs-keyword">fi</span>
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="35" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<p><img src="./.assets/image/login_and_non-login_rc.png" alt="" style="height:600px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="36" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<ul>
<li>环境变量在<code>login shell</code>的启动脚本里设置一次就可以自动带到<code>child non-login shell</code>里，而<code>shell</code>的<code>local variable</code>、<code>function</code>、<code>alias</code>等设置未带到<code>child non-login shell</code>里</li>
<li>一般情况下
<ol>
<li><code>~/.bash_profile</code>中设置环境变量（确保<code>~/.bash_profile</code>会调用<code>~/.bashrc</code>时，也可以<code>~/.bashrc</code>设置环境变量）</li>
<li><code>~/.bashrc</code>里设置<code>local variable</code>、<code>function</code>、<code>alias</code>等</li>
</ol>
</li>
</ul>
<blockquote>
<p><a href="https://akaedu.github.io/book/ch31s04.html">bash启动脚本(DB/OL).</a></p>
</blockquote>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="37" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h3>执行脚本的方式</h3>
<ol>
<li><code>fork</code>方式：新建一个子<code>shell</code>执行</li>
<li><code>source</code>方式：当前<code>shell</code>执行</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="38" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h3>导出环境变量</h3>
<ol>
<li><code>export VAR=...</code></li>
<li>希望在当前<code>shell</code>中使用新添加在<code>~/.bashrc</code>里的环境变量，则运行<code>source ~/.bashrc</code>或<code>. ~/.bashrc</code></li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="39" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h3>输入输出重定向</h3>
<ul>
<li>输入输出重定向：将<code>stdin</code>、<code>stdout</code>和<code>stderr</code>重定向到非默认位置
<ol>
<li><code>stdin</code>：文件描述符为<code>0</code>，<code>&lt;</code>或<code>&lt;&lt;</code></li>
<li><code>stdout</code>：文件描述符为<code>1</code>，<code>&gt;</code>/<code>1&gt;</code>或<code>&gt;&gt;</code>/<code>1&gt;&gt;</code></li>
<li><code>stderr</code>：文件描述符为<code>2</code>，<code>2&gt;</code>或<code>2&gt;&gt;</code></li>
</ol>
</li>
<li><code>/dev/null</code></li>
</ul>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="40" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<pre><code class="language-sh"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap>cmd &lt; file_or_other
cmd &lt;&lt; <span class="hljs-string">marker   # here documents
&gt;some data
&gt;marker</span>

cmd &gt; file_or_other
cmd &gt;&gt; file_or_other

cmd &gt;&gt; /dev/null 2&gt;&amp;1
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="41" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h3><code>pipe</code>管道</h3>
<ul>
<li><code>pipe</code>：将一个命令或程序的输出直接连接到另一个命令或程序的输入</li>
<li><code>|</code></li>
<li><code>filter过滤器</code>：从输入流（一般是<code>stdin</code>）中接收输入并进行处理，然后将结果写入到输出流（一般指<code>stdout</code>）</li>
</ul>
<pre><code class="language-sh"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap>who | wc -l
who | sort
who | grep <span class="hljs-string">&quot;arm&quot;</span>
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="42" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h3><code>Regular Expression</code>正则表达式 -- 通配符</h3>
<ol>
<li><code>.</code>：一个任意字符（用于“正则表达式”，不用于“命令扩展”）</li>
<li><code>？</code>：一个任意字符（用于“命令扩展”，不用于“正则表达式”）</li>
<li><code>*</code>：零个或多个任意字符串</li>
<li><code>[]</code>：字符序列</li>
<li><code>!</code>：<code>[]</code>中用<code>!</code>表示排除</li>
<li><code>^</code>：只匹配行头</li>
<li><code>$</code>：只匹配行尾</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="43" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h3><code>Regular Expression</code>正则表达式 -- 模式表达式</h3>
<ol>
<li><code>?(模式列表)</code>：0或1个模式</li>
<li><code>*(模式列表)</code>：0或多个模式</li>
<li><code>+(模式列表)</code>：1或多个模式列表</li>
<li><code>@(模式列表)</code>；1个模式</li>
<li><code>!(模式列表)</code>：除了一个模式以外的任何模式</li>
</ol>
<blockquote>
<ol>
<li><a href="http://blog.leanote.com/post/gaunthan/%E9%80%9A%E9%85%8D%E7%AC%A6%E6%89%A9%E5%B1%95">GAUNTHAN. Shell脚本中的通配符扩展</a></li>
<li><a href="https://wangdoc.com/bash/expansion.html">阮一峰. Bash 的模式扩展</a></li>
</ol>
</blockquote>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="44" data-class="lead" data-background-color="FloralWhite" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="lead" style="--class:lead;--background-color:FloralWhite;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;background-color:FloralWhite;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>

<h2>Package Managers</h2>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="45" data-class="lead" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="lead" style="--class:lead;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;" data-size="16:9">
<header><em>Operating Environment</em></header>

<h3><code>dpkg</code></h3>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="46" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h4><code>dpkg</code>选项--查询类</h4>
<pre><code class="language-sh"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap>-s|--status [&lt;pkg-name&gt;...]       Display package status details.
-p|--print-avail [&lt;pkg-name&gt;...]  Display available version details.
-L|--listfiles &lt;pkg-name&gt;...      List files owned by package(s).
-l|--list [&lt;pattern&gt;...]         List packages concisely.
-S|--search &lt;pattern&gt;...         Find package(s) owning file(s).
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="47" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h4><code>dpkg</code>选项--安装卸载类</h4>
<pre><code class="language-sh"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap>-i|--install &lt;.deb filename&gt;...
-r|--remove &lt;pkg-name&gt;...
-P|--purge &lt;pkg-name&gt;...
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="48" data-class="lead" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="lead" style="--class:lead;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;" data-size="16:9">
<header><em>Operating Environment</em></header>

<h3><code>apt</code></h3>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="49" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<ol>
<li>查询软件包</li>
<li>下载软件包或源码</li>
<li>安装软件包：自动解决依赖关系</li>
<li>删除软件包：提示依赖关系</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="50" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h4><code>apt</code>重要文件</h4>
<pre><code class="language-sh"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap>/etc/apt/sources.list           软件包源配置文件
/etc/apt/sources.list.d/        软件包源子配置文件
/etc/apt/apt.conf               apt配置文件
/etc/apt/apt.conf.d/            apt子配置文件
/etc/apt/preferences            版本参数
/var/cache/apt/archives/        存储已经下载的软件包
/var/cache/apt/archives/partial 存储正在下载的软件包
/var/lib/apt/lists/             存储已经下载的软件包详细信息
/var/lib/apt/lists/partial/     存储正在下载的软件包详细信息
/var/lib/dpkg/status            安装及卸载的软件包信息
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="51" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h4><code>apt</code> --- Read</h4>
<pre><code class="language-sh"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap>list - list packages based on package names
search - search <span class="hljs-keyword">in</span> package descriptions
show - show package details

<span class="hljs-comment"># sub-commands cannot find in man</span>
depends
rdepends
policy
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="52" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h4><code>apt</code>子命令 --- Create</h4>
<pre><code class="language-sh"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap>install - install packages
reinstall - reinstall packages
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="53" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h4><code>apt</code>子命令 --- Update</h4>
<pre><code class="language-sh"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap>update - update list of available packages
upgrade - upgrade the system by installing/upgrading packages
full-upgrade - upgrade the system by removing/installing/upgrading packages
</span></span></foreignObject></svg></code></pre>
<p><img class="emoji" draggable="false" alt="❗" src="https://twemoji.maxcdn.com/2/svg/2757.svg" data-marp-twemoji=""/> <code>apt full-upgrade</code>对应<code>apt-get dist-upgrade</code> <img class="emoji" draggable="false" alt="❗" src="https://twemoji.maxcdn.com/2/svg/2757.svg" data-marp-twemoji=""/></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="54" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h4><code>apt</code>子命令 --- Delete</h4>
<pre><code class="language-sh"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap>remove - remove packages
autoremove - remove automatically all unused packages
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="55" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h4><code>update</code> VS <code>upgrade</code> VS <code>full-upgrade</code></h4>
<ul>
<li><code>update</code>: update package metadata</li>
<li><code>upgrade</code> and <code>full-upgrade</code>: update package</li>
</ul>
<p><img class="emoji" draggable="false" alt="⚠️" src="https://twemoji.maxcdn.com/2/svg/26a0.svg" data-marp-twemoji=""/></p>
<ol>
<li>建议<code>install/reinstall/upgrade/full-upgrade</code>之前先执行<code>update</code>，<code>sudo apt update &amp;&amp; apt upgrade [pkg-name]</code></li>
<li><code>yum</code>中没有<code>update</code>和<code>upgrade</code>之分，在<code>update package</code>之前自动<code>update package metadata</code></li>
</ol>
<p><img class="emoji" draggable="false" alt="⚠️" src="https://twemoji.maxcdn.com/2/svg/26a0.svg" data-marp-twemoji=""/></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="56" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<ul>
<li><code>upgrade</code>: install available upgrades of all packages currently installed on the system from the sources configured via <code>sources.list</code>. New packages will be installed if required to satisfy dependencies, <strong><em>but existing packages will never be removed</em></strong>. If an upgrade for a package <strong><em>requires the removal of an installed package</em>_</strong> the upgrade for this package <strong><em>isn't performed</em></strong>.</li>
<li><code>full-upgrade</code>: performs the function of upgrade but <strong><em>will remove currently installed packages</em></strong> if this is needed to upgrade the system as a whole.</li>
</ul>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="57" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<ul>
<li>假设软件包<code>a</code>原先依赖<code>b</code>、<code>c</code>、<code>d</code>，现在<code>a</code>依赖<code>b</code>、<code>c</code>、<code>e</code>。<code>full-upgrade</code>会删除<code>d</code>安装<code>e</code>，并把<code>a</code>软件包升级，而<code>upgrade</code>会认为依赖关系改变而不执行升级<code>a</code></li>
</ul>
<blockquote>
<p><a href="http://www.guozet.me/post/Ubuntu-Update-Upgrade/">Ubuntu里面update,upgrade和dist-upgrade的区别</a></p>
</blockquote>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="58" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<ul>
<li>One corner case where this might do you more harm than good is when you may have some custom software on your Linux system which may be dependent on the older packages, and these custom software which you have built and installed yourselves might not be known to the apt tool, so removing that package might not be the best thing to do!</li>
</ul>
<blockquote>
<p><a href="https://embeddedinventor.com/apt-upgrade-vs-full-upgrade-differences-explained-for-beginners/">“apt upgrade vs full-upgrade” Differences Explained For Beginners!</a></p>
</blockquote>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="59" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h4><code>apt</code>子命令 --- 配置及维护类</h4>
<pre><code class="language-sh"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap>edit-sources - edit the <span class="hljs-built_in">source</span> information file

<span class="hljs-comment"># sub-commands cannot find in man</span>
clean
autoclean
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="60" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h3><code>aptitude</code></h3>
<p>Aptitude is front-end to advanced packaging tool which adds a user interface to the functionality, thus allowing a user to interactively search for a package and install or remove it. Initially created for Debain, Aptitude extends its functionality to RPM based distributions as well.</p>
<blockquote>
<p><a href="https://www.tecmint.com/difference-between-apt-and-aptitude/">What is APT and Aptitude? and What’s real Difference Between Them?</a></p>
</blockquote>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="61" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h3><code>apt</code> VS <code>apt-get</code> VS <code>aptitude</code></h3>
<ol>
<li><code>apt</code>、<code>apt-get</code>、<code>aptitude</code>都是<code>APT</code>的<code>front-end</code></li>
<li><code>apt</code>和<code>apt-get</code>是<code>CLI</code>命令，<code>aptitude</code>是<code>CLI</code>字符图形界面工具（也提供<code>CLI</code>命令）</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="62" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h3><code>apt</code> VS <code>apt-get</code></h3>
<ol>
<li><code>16.04</code>引入首个<code>apt</code>命令的稳定版本</li>
<li><code>apt</code>是<code>apt-get</code>、<code>apt-cache</code>、<code>apt-config</code>三个命令的整合和改进（整合了大部分命令，小部分命令未纳入<code>apt</code>）</li>
<li><code>apt</code>新增了进度条、可升级软件包提示等人机交互功能</li>
<li><code>apt</code>新增了<code>apt list</code>、<code>apt edit-sources</code>子命令</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="63" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h4><code>apt-get</code>, <code>apt-cache</code>, <code>apt-config</code></h4>
<ol>
<li><code>apt-get</code>：安装软件包</li>
<li><code>apt-cache</code>：查询软件包信息</li>
<li><code>apt-config</code>：配置<code>APT</code></li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="64" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h4><code>/etc/apt/sources.list</code></h4>
<ol>
<li>第1部分：软件源类型
<ul>
<li><code>deb</code></li>
<li><code>deb-src</code></li>
</ul>
</li>
<li>第2部分：URL</li>
<li>第3部分：软件源对应的发行版本及软件源类型
<ul>
<li><code>代号</code>：默认版本</li>
<li><code>代号-security</code>：安全更新</li>
<li><code>代号-updates</code>：推荐的一般更新</li>
<li><code>代号-backports</code>：无支持的更新（通常还存在一些bug）</li>
<li><code>代号-proposed</code>：预览版更新（相当于<code>updates</code>的测试版）</li>
</ul>
</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="65" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<ol>
<li>剩余部分：软件源的标签（可存在多个标签）
<ul>
<li><code>main</code>：<code>Canonical</code>维护的开源软件包</li>
<li><code>universe</code>：<code>community</code>维护的开源软件包</li>
<li><code>restricted</code>：设备生产商专有的设备驱动软件包</li>
<li><code>multiverse</code>：有版权或受法律保护的软件包</li>
</ul>
</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="66" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h4><code>PPA(Personal Package Archives)</code>源</h4>
<ol>
<li><code>Canonical</code>架设的，供软件开发人员创建自己的存储库，以快速发布非稳定版或个人软件包</li>
<li><a href="https://launchpad.net/ubuntu/+ppas">https://launchpad.net/ubuntu/+ppas</a></li>
<li><code>PPA</code>的配置以单独的文件形式存放在<code>/etc/apt/sources.list.d/</code>目录</li>
</ol>
<pre><code class="language-sh"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap>ppa:&lt;user&gt;/&lt;ppa-name&gt;

<span class="hljs-comment"># add ppa</span>
add-apt-repository ppa:&lt;username&gt;/&lt;ppa-name&gt;
<span class="hljs-comment"># remove ppa</span>
add-apt-repository -r ppa:&lt;username&gt;/&lt;ppa-name&gt;
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="67" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<blockquote>
<p><a href="https://itsfoss.com/ppa-guide/">Using PPA in Ubuntu Linux [Complete Guide]</a></p>
</blockquote>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="68" data-class="lead" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="lead" style="--class:lead;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;" data-size="16:9">
<header><em>Operating Environment</em></header>

<h3><code>snap</code></h3>
<ol>
<li>最初由<code>Canonical</code>公司为了<code>Ubuntu Touch</code>设计和构建</li>
<li>基于<code>sandbox</code>/<code>container</code>模式</li>
<li><code>Ubuntu 16.04</code>引入，一般安装在<code>/snap/</code>下</li>
</ol>
<blockquote>
<p><a href="https://zh.wikipedia.org/wiki/Snappy_(%E5%8C%85%E7%AE%A1%E7%90%86%E5%99%A8)">Snappy (包管理器)</a></p>
</blockquote>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="69" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h4><code>snap</code>的优缺点</h4>
<ul>
<li>优点：
<ol>
<li><code>sandbox</code>/<code>container</code>模式，运行环境与软件打包在一起，跨平台运行，进一步安全隔离</li>
<li>支持事务型自动更新</li>
</ol>
</li>
<li>缺点
<ol>
<li>软件包体积较大（连同运行环境一起打包）</li>
<li>目前软件数量较少</li>
</ol>
</li>
</ul>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="70" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h4><code>snap</code>子命令--查询类</h4>
<pre><code class="language-sh"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap>find             Find packages to install
info             Show detailed information about snaps
list             List installed snaps
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="71" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h4><code>snap</code>常用子命令--安装卸载类</h4>
<pre><code class="language-sh"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap>install          Install snaps on the system
remove           Remove snaps from the system
refresh          Refresh snaps <span class="hljs-keyword">in</span> the system
revert           Reverts the given snap to the previous state
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="72" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h4><code>snap</code>常用子命令--运行类</h4>
<pre><code class="language-sh"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap>start            Start services
stop             Stop services
restart          Restart services
</span></span></foreignObject></svg></code></pre>
<p><img class="emoji" draggable="false" alt="👉" src="https://twemoji.maxcdn.com/2/svg/1f449.svg" data-marp-twemoji=""/> <code>/snap/bin/</code>目录通常被添加到<code>$PATH</code>中，因此，也可以直接运行 <img class="emoji" draggable="false" alt="👈" src="https://twemoji.maxcdn.com/2/svg/1f448.svg" data-marp-twemoji=""/></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="73" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h4><code>snap</code>常用子命令--配置维护类</h4>
<pre><code class="language-sh"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap><span class="hljs-built_in">disable</span>          Disable a snap <span class="hljs-keyword">in</span> the system
<span class="hljs-built_in">enable</span>           Enable a snap <span class="hljs-keyword">in</span> the system
switch           Switches snap to a different channel
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="74" data-class="lead" data-background-color="FloralWhite" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="lead" style="--class:lead;--background-color:FloralWhite;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;background-color:FloralWhite;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>

<h2>Editors</h2>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="75" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<ol>
<li><code>ed</code>: a line-oriented text editor</li>
<li><code>vi</code>：<code>Bill Joy</code>(<code>William Nelson Joy</code>)
<ul>
<li><code>GNU/vim</code>(Vi IMproved)</li>
</ul>
</li>
<li><code>emacs</code>(Editor MACroS)
<ul>
<li><code>GNU/Emacs</code></li>
</ul>
</li>
<li><code>GNU/nano</code>(Nano's ANOther editor)</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="76" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<blockquote>
<ol>
<li><a href="https://en.wikipedia.org/wiki/Vi">vi</a></li>
<li><a href="https://en.wikipedia.org/wiki/Vim_(text_editor)">Vim (text editor)</a></li>
<li><a href="https://en.wikipedia.org/wiki/Emacs">Emacs</a></li>
<li><a href="https://en.wikipedia.org/wiki/GNU_Emacs">GNU Emacs</a></li>
<li><a href="https://en.wikipedia.org/wiki/GNU_nano">GNU nano</a></li>
</ol>
</blockquote>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="77" data-class="lead" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="lead" style="--class:lead;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;" data-size="16:9">
<header><em>Operating Environment</em></header>

<h3><code>vi</code>/<code>vim</code></h3>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="78" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h4><code>vi</code> father --- <code>Bill Joy</code></h4>
<p><img src="./.assets/image/Bill_Joy_at_World_Economic_Forum_(Davos),_2003-01_(cropped).jpg" alt="" style="height:580px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="79" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<p><img src="./.assets/image/billjoy-650x488.jpg" alt="" style="height:540px;" /></p>
<blockquote>
<p><a href="https://engineering.berkeley.edu/bill-joy-co-founder-of-sun-microsystems/">Bill Joy: Co-founder of Sun Microsystems</a></p>
</blockquote>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="80" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<ol>
<li><code>vim</code>提倡快速使用键盘（不包含方向键和数字键）</li>
<li><code>vim</code>的4个模式
<ol>
<li><code>normal mode</code>普通模式</li>
<li><code>insert mode</code>插入模式</li>
<li><code>command-line mode</code>命令行模式/<code>command mode</code>命令模式</li>
<li><code>visual mode</code>可视模式</li>
</ol>
</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="81" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<p><img src="./.assets/image/vim-modes.png" alt="" style="width:1120px;" /></p>
<blockquote>
<p><a href="https://cs61a.org/articles/vim/">Vim</a></p>
</blockquote>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="82" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<p><img src="./.assets/image/Vim-(logiciel)-console.png" alt="" style="height:600px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="83" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h4><code>vim</code>常用命令</h4>
<blockquote>
<p><a href="https://www.pythonclassroom.com/python-cloud-options/cloud9/vim-mode">Vim Mode</a></p>
</blockquote>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="84" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<p><img src="./.assets/image/vi-vim-cheat-sheet.gif" alt="" style="height:600px;" /></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="85" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h5><code>normal mode</code> -- Movement</h5>
<pre><code class="language-sh"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap>h           Moves the cursor one character to the left
l           Moves the cursor one character to the right
k           Moves the cursor up one line
j           Moves the cursor down one line
nG or :n    Cursor goes to the specified (n) line
^F          Forward screenful
^B          Backward screenful
^f          One page forward
^b          One page backward
^U          Up half screenful
^D          Down half screenful
$           Move cursor to the end of current line
0           Move cursor to the beginning of current line
w           Forward one word
b           Backward one word
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="86" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h5><code>normal mode</code> -- Text Manipulation</h5>
<pre><code class="language-sh"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap>x           Delete character
dw          Delete word from cursor on
db          Delete word backward
dd          Delete line
d$          Delete to end of line
d^          Delete to beginning of line
yy          yank current line
y$          yank to end of current line from cursor
yw          yank from cursor to end of current word
p           paste below cursor
P           paste above cursor
u           Undo last change
U           Restore line
.           Repeat last <span class="hljs-built_in">command</span>
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="87" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h5><code>normal mode</code> to <code>insert mode</code></h5>
<pre><code class="language-sh"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap>a   Append text following current cursor position
A   Append text to the end of current line
i   Insert text before the current cursor position
I   Insert text at the beginning of the cursor line
o   Open up a new line following the current line and add text there
O   Open up a new line <span class="hljs-keyword">in</span> front of the current line and add text there
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="88" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h5><code>command-line mode</code></h5>
<pre><code class="language-sh"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap>:wq             Write file to disk and quit the editor
:q!             Quit (no warning)
:q              Quit (a warning is printed <span class="hljs-keyword">if</span> a modified file has not been saved)
ZZ              Save workspace and quit the editor (same as :wq)
:w              Write workspace to original file
:w file         Write workspace to named file
:e file         Start editing a new file
:r file         Read contents of a file to the workspace
:/              pattern Search forward <span class="hljs-keyword">for</span> the pattern
:?              pattern Search backward <span class="hljs-keyword">for</span> the pattern
:g/p1/s//p2/g   replace every occurrence of p1 with p2
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="89" data-class="lead" data-background-color="FloralWhite" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="lead" style="--class:lead;--background-color:FloralWhite;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;background-color:FloralWhite;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>

<h2>Information and Help</h2>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="90" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h3>Information</h3>
<pre><code class="language-sh"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap><span class="hljs-built_in">which</span>       <span class="hljs-comment"># locate a command</span>
whereis     <span class="hljs-comment"># locate the binary, source, and manual page files for a command</span>
whatis      <span class="hljs-comment"># display one-line manual page descriptions</span>
<span class="hljs-built_in">type</span>        <span class="hljs-comment"># display information about command type.</span>

file        <span class="hljs-comment"># determine file type</span>
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="91" data-class="invert + lead" data-color="white" data-background-color="#202228" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="invert + lead" style="--class:invert + lead;--color:white;--background-color:#202228;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>
<h3>Help</h3>
<pre><code class="language-sh"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap>man man

<span class="hljs-built_in">help</span> <span class="hljs-built_in">help</span>
<span class="hljs-built_in">help</span> &lt;builtin_cmd&gt;      <span class="hljs-comment"># builtin command has no man page and info page</span>
&lt;cmd&gt; --<span class="hljs-built_in">help</span>

info info               <span class="hljs-comment"># only when the command has info page</span>
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="92" data-class="lead" data-background-color="White" data-header="_Operating Environment_" data-footer="@aRoming" data-theme="gaia" class="lead" style="--class:lead;--background-color:White;--header:_Operating Environment_;--footer:@aRoming;--theme:gaia;background-color:White;background-image:none;" data-size="16:9">
<header><em>Operating Environment</em></header>

<p><img class="emoji" draggable="false" alt="✨" src="https://twemoji.maxcdn.com/2/svg/2728.svg" data-marp-twemoji=""/><img class="emoji" draggable="false" alt="✨" src="https://twemoji.maxcdn.com/2/svg/2728.svg" data-marp-twemoji=""/><img class="emoji" draggable="false" alt="✨" src="https://twemoji.maxcdn.com/2/svg/2728.svg" data-marp-twemoji=""/> <strong>Thank You</strong> <img class="emoji" draggable="false" alt="✨" src="https://twemoji.maxcdn.com/2/svg/2728.svg" data-marp-twemoji=""/><img class="emoji" draggable="false" alt="✨" src="https://twemoji.maxcdn.com/2/svg/2728.svg" data-marp-twemoji=""/><img class="emoji" draggable="false" alt="✨" src="https://twemoji.maxcdn.com/2/svg/2728.svg" data-marp-twemoji=""/></p>
<p><img class="emoji" draggable="false" alt="🆗" src="https://twemoji.maxcdn.com/2/svg/1f197.svg" data-marp-twemoji=""/><strong>End of This Slide</strong><img class="emoji" draggable="false" alt="🆗" src="https://twemoji.maxcdn.com/2/svg/1f197.svg" data-marp-twemoji=""/></p>
<footer>@aRoming</footer>
</section>
<script>!function(){"use strict";const t="marpitSVGPolyfill:setZoomFactor,",e=Symbol();let r,o;function n(n){const i="object"==typeof n&&n.target||document,a="object"==typeof n?n.zoom:n;window[e]||(Object.defineProperty(window,e,{configurable:!0,value:!0}),window.addEventListener("message",(({data:e,origin:r})=>{if(r===window.origin)try{if(e&&"string"==typeof e&&e.startsWith(t)){const[,t]=e.split(","),r=Number.parseFloat(t);Number.isNaN(r)||(o=r)}}catch(t){console.error(t)}})));let l=!1;Array.from(i.querySelectorAll("svg[data-marpit-svg]"),(t=>{var e,n,i,s;t.style.transform||(t.style.transform="translateZ(0)");const c=a||o||t.currentScale||1;r!==c&&(r=c,l=c);const d=t.getBoundingClientRect(),{length:u}=t.children;for(let r=0;r<u;r+=1){const o=t.children[r],a=o.getScreenCTM();if(a){const t=null!==(n=null===(e=o.x)||void 0===e?void 0:e.baseVal.value)&&void 0!==n?n:0,r=null!==(s=null===(i=o.y)||void 0===i?void 0:i.baseVal.value)&&void 0!==s?s:0,l=o.firstElementChild,{style:u}=l;u.transformOrigin||(u.transformOrigin=`${-t}px ${-r}px`),u.transform=`scale(${c}) matrix(${a.a}, ${a.b}, ${a.c}, ${a.d}, ${a.e-d.left}, ${a.f-d.top}) translateZ(0.0001px)`}}})),!1!==l&&Array.from(i.querySelectorAll("iframe"),(({contentWindow:e})=>{null==e||e.postMessage(`${t}${l}`,"null"===window.origin?"*":window.origin)}))}r=1,o=void 0;const i=(t,e,r)=>{if(t.getAttribute(e)!==r)return t.setAttribute(e,r),!0};function a({once:t=!1,target:e=document}={}){const r="Apple Computer, Inc."===navigator.vendor?[n]:[];let o=!t;const a=()=>{for(const t of r)t({target:e});!function(t=document){Array.from(t.querySelectorAll('svg[data-marp-fitting="svg"]'),(t=>{var e;const r=t.firstChild,o=r.firstChild,{scrollWidth:n,scrollHeight:a}=o;let l,s=1;if(t.hasAttribute("data-marp-fitting-code")&&(l=null===(e=t.parentElement)||void 0===e?void 0:e.parentElement),t.hasAttribute("data-marp-fitting-math")&&(l=t.parentElement),l){const t=getComputedStyle(l),e=Math.ceil(l.clientWidth-parseFloat(t.paddingLeft||"0")-parseFloat(t.paddingRight||"0"));e&&(s=e)}const c=Math.max(n,s),d=Math.max(a,1),u=`0 0 ${c} ${d}`;i(r,"width",`${c}`),i(r,"height",`${d}`),i(t,"preserveAspectRatio",getComputedStyle(t).getPropertyValue("--preserve-aspect-ratio")||"xMinYMin meet"),i(t,"viewBox",u)&&t.classList.toggle("__reflow__")}))}(e),o&&window.requestAnimationFrame(a)};return a(),()=>{o=!1}}const l=Symbol(),s=document.currentScript;((t=document)=>{if("undefined"==typeof window)throw new Error("Marp Core's browser script is valid only in browser context.");if(t[l])return t[l];const e=a({target:t}),r=()=>{e(),delete t[l]};Object.defineProperty(t,l,{configurable:!0,value:r})})(s?s.getRootNode():document)}();
</script></foreignObject></svg></div><div class="bespoke-marp-note" data-index="1" tabindex="0"><p>@import &quot; [TOC] &quot; {cmd=&quot;toc&quot; depthFrom=2 depthTo=2 orderedList=true}</p><p>code_chunk_output</p><p>/code_chunk_output</p></div><div class="bespoke-marp-note" data-index="11" tabindex="0"><p>TODO: add it...

---

#### `tty`

1. `/dev/ttySn`/`/dev/tts/n`：串行端口终端

&gt;[Linux中tty、pty、pts的概念区别(转)](https://www.jianshu.com/p/ad2a5e582c61)</p></div><div class="bespoke-marp-note" data-index="61" tabindex="0"><p>TODO:具体哪些命令没有纳入？</p><p>TODO:还有哪些新增命令？</p></div><div class="bespoke-marp-note" data-index="76" tabindex="0"><p>3rd leading page</p></div><div class="bespoke-marp-note" data-index="88" tabindex="0"><p>2nd leading page</p></div><div class="bespoke-marp-note" data-index="91" tabindex="0"><p>end of slide page</p></div><script>/*!! License: https://unpkg.com/@marp-team/marp-cli@1.5.0/lib/bespoke.js.LICENSE.txt */
!function(){"use strict";const e=document.body,t=(...e)=>history.replaceState(...e),n="presenter",r="next",o=["",n,r],a="data-bespoke-marp-",i=(e,{protocol:t,host:n,pathname:r,hash:o}=location)=>{const a=e.toString();return`${t}//${n}${r}${a?"?":""}${a}${o}`},s=()=>e.dataset.bespokeView,l=e=>new URLSearchParams(location.search).get(e),c=(e,n={})=>{var r;const o={location,setter:t,...n},a=new URLSearchParams(o.location.search);for(const t of Object.keys(e)){const n=e[t];"string"==typeof n?a.set(t,n):a.delete(t)}try{o.setter({...null!==(r=window.history.state)&&void 0!==r?r:{}},"",i(a,o.location))}catch(e){console.error(e)}},d=(()=>{const e="bespoke-marp";try{return localStorage.setItem(e,e),localStorage.removeItem(e),!0}catch(e){return!1}})(),f=e=>{try{return localStorage.getItem(e)}catch(e){return null}},u=(e,t)=>{try{return localStorage.setItem(e,t),!0}catch(e){return!1}},m=e=>{try{return localStorage.removeItem(e),!0}catch(e){return!1}},g=(e,t)=>{const n="aria-hidden";t?e.setAttribute(n,"true"):e.removeAttribute(n)},p=e=>{e.parent.classList.add("bespoke-marp-parent"),e.slides.forEach((e=>e.classList.add("bespoke-marp-slide"))),e.on("activate",(t=>{const n="bespoke-marp-active",r=t.slide,o=r.classList,a=!o.contains(n);if(e.slides.forEach((e=>{e.classList.remove(n),g(e,!0)})),o.add(n),g(r,!1),a){const e=`${n}-ready`;o.add(e),document.body.clientHeight,o.remove(e)}}))},v=e=>{let t=0,n=0;Object.defineProperty(e,"fragments",{enumerable:!0,value:e.slides.map((e=>[null,...e.querySelectorAll("[data-marpit-fragment]")]))});const r=r=>void 0!==e.fragments[t][n+r],o=(r,o)=>{t=r,n=o,e.fragments.forEach(((e,t)=>{e.forEach(((e,n)=>{if(null==e)return;const i=t<r||t===r&&n<=o;e.setAttribute(`${a}fragment`,(i?"":"in")+"active");const s=`${a}current-fragment`;t===r&&n===o?e.setAttribute(s,"current"):e.removeAttribute(s)}))})),e.fragmentIndex=o;const i={slide:e.slides[r],index:r,fragments:e.fragments[r],fragmentIndex:o};e.fire("fragment",i)};e.on("next",(({fragment:a=!0})=>{if(a){if(r(1))return o(t,n+1),!1;const a=t+1;e.fragments[a]&&o(a,0)}else{const r=e.fragments[t].length;if(n+1<r)return o(t,r-1),!1;const a=e.fragments[t+1];a&&o(t+1,a.length-1)}})),e.on("prev",(({fragment:a=!0})=>{if(r(-1)&&a)return o(t,n-1),!1;const i=t-1;e.fragments[i]&&o(i,e.fragments[i].length-1)})),e.on("slide",(({index:t,fragment:n})=>{let r=0;if(void 0!==n){const o=e.fragments[t];if(o){const{length:e}=o;r=-1===n?e-1:Math.min(Math.max(n,0),e-1)}}o(t,r)})),o(0,0)},h=document,y=()=>!(!h.fullscreenEnabled&&!h.webkitFullscreenEnabled),x=()=>!(!h.fullscreenElement&&!h.webkitFullscreenElement),w=e=>{e.fullscreen=()=>{y()&&(async()=>{return x()?null===(e=h.exitFullscreen||h.webkitExitFullscreen)||void 0===e?void 0:e.call(h):((e=h.body)=>{var t;return null===(t=e.requestFullscreen||e.webkitRequestFullscreen)||void 0===t?void 0:t.call(e)})();var e})()},document.addEventListener("keydown",(t=>{"f"!==t.key&&"F11"!==t.key||t.altKey||t.ctrlKey||t.metaKey||!y()||(e.fullscreen(),t.preventDefault())}))},b="bespoke-marp-inactive",k=(e=2e3)=>({parent:t,fire:n})=>{const r=t.classList,o=e=>n(`marp-${e?"":"in"}active`);let a;const i=()=>{a&&clearTimeout(a),a=setTimeout((()=>{r.add(b),o()}),e),r.contains(b)&&(r.remove(b),o(!0))};for(const e of["mousedown","mousemove","touchend"])document.addEventListener(e,i);setTimeout(i,0)},E=["AUDIO","BUTTON","INPUT","SELECT","TEXTAREA","VIDEO"],L=e=>{e.parent.addEventListener("keydown",(e=>{if(!e.target)return;const t=e.target;(E.includes(t.nodeName)||"true"===t.contentEditable)&&e.stopPropagation()}))},$=e=>{window.addEventListener("load",(()=>{for(const t of e.slides){const e=t.querySelector("[data-marp-fitting]")?"":"hideable";t.setAttribute(`${a}load`,e)}}))},P=({interval:e=250}={})=>t=>{document.addEventListener("keydown",(e=>{if(" "===e.key&&e.shiftKey)t.prev();else if("ArrowLeft"===e.key||"ArrowUp"===e.key||"PageUp"===e.key)t.prev({fragment:!e.shiftKey});else if(" "!==e.key||e.shiftKey)if("ArrowRight"===e.key||"ArrowDown"===e.key||"PageDown"===e.key)t.next({fragment:!e.shiftKey});else if("End"===e.key)t.slide(t.slides.length-1,{fragment:-1});else{if("Home"!==e.key)return;t.slide(0)}else t.next();e.preventDefault()}));let n,r,o=0;t.parent.addEventListener("wheel",(a=>{let i=!1;const s=(e,t)=>{e&&(i=i||((e,t)=>((e,t)=>{const n="X"===t?"Width":"Height";return e[`client${n}`]<e[`scroll${n}`]})(e,t)&&((e,t)=>{const{overflow:n}=e,r=e[`overflow${t}`];return"auto"===n||"scroll"===n||"auto"===r||"scroll"===r})(getComputedStyle(e),t))(e,t)),(null==e?void 0:e.parentElement)&&s(e.parentElement,t)};if(0!==a.deltaX&&s(a.target,"X"),0!==a.deltaY&&s(a.target,"Y"),i)return;a.preventDefault();const l=Math.sqrt(a.deltaX**2+a.deltaY**2);if(void 0!==a.wheelDelta){if(void 0===a.webkitForce&&Math.abs(a.wheelDelta)<40)return;if(a.deltaMode===a.DOM_DELTA_PIXEL&&l<4)return}else if(a.deltaMode===a.DOM_DELTA_PIXEL&&l<12)return;r&&clearTimeout(r),r=setTimeout((()=>{n=0}),e);const c=Date.now()-o<e,d=l<=n;if(n=l,c||d)return;let f;(a.deltaX>0||a.deltaY>0)&&(f="next"),(a.deltaX<0||a.deltaY<0)&&(f="prev"),f&&(t[f](),o=Date.now())}))},S=(e=".bespoke-marp-osc")=>{const t=document.querySelector(e);if(!t)return()=>{};const n=(e,n)=>{t.querySelectorAll(`[${a}osc=${JSON.stringify(e)}]`).forEach(n)};return y()||n("fullscreen",(e=>e.style.display="none")),d||n("presenter",(e=>{e.disabled=!0,e.title="Presenter view is disabled due to restricted localStorage."})),e=>{t.addEventListener("click",(t=>{if(t.target instanceof HTMLElement){const{bespokeMarpOsc:n}=t.target.dataset;n&&t.target.blur();const r={fragment:!t.shiftKey};"next"===n?e.next(r):"prev"===n?e.prev(r):"fullscreen"===n?null==e||e.fullscreen():"presenter"===n&&e.openPresenterView()}})),e.parent.appendChild(t),e.on("activate",(({index:t})=>{n("page",(n=>n.textContent=`Page ${t+1} of ${e.slides.length}`))})),e.on("fragment",(({index:t,fragments:r,fragmentIndex:o})=>{n("prev",(e=>e.disabled=0===t&&0===o)),n("next",(n=>n.disabled=t===e.slides.length-1&&o===r.length-1))})),e.on("marp-active",(()=>g(t,!1))),e.on("marp-inactive",(()=>g(t,!0))),y()&&(e=>{for(const t of["","webkit"])h.addEventListener(t+"fullscreenchange",e)})((()=>n("fullscreen",(e=>e.classList.toggle("exit",y()&&x())))))}},I=e=>{window.addEventListener("message",(t=>{if(t.origin!==window.origin)return;const[n,r]=t.data.split(":");if("navigate"===n){const[t,n]=r.split(",");let o=Number.parseInt(t,10),a=Number.parseInt(n,10)+1;a>=e.fragments[o].length&&(o+=1,a=0),e.slide(o,{fragment:a})}}))};var T=["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"];let A=e=>String(e).replace(/[&<>"']/g,(e=>`&${C[e]};`)),C={"&":"amp","<":"lt",">":"gt",'"':"quot","'":"apos"},N="dangerouslySetInnerHTML",K={className:"class",htmlFor:"for"},O={};function D(e,t){let n=[],r="";t=t||{};for(let e=arguments.length;e-- >2;)n.push(arguments[e]);if("function"==typeof e)return t.children=n.reverse(),e(t);if(e){if(r+="<"+e,t)for(let e in t)!1!==t[e]&&null!=t[e]&&e!==N&&(r+=` ${K[e]?K[e]:A(e)}="${A(t[e])}"`);r+=">"}if(-1===T.indexOf(e)){if(t[N])r+=t[N].__html;else for(;n.length;){let e=n.pop();if(e)if(e.pop)for(let t=e.length;t--;)n.push(e[t]);else r+=!0===O[e]?e:A(e)}r+=e?`</${e}>`:""}return O[r]=!0,r}const M=({children:e})=>D(null,null,...e),q="bespoke-marp-presenter-",_={container:`${q}container`,next:`${q}next`,nextContainer:`${q}next-container`,noteContainer:`${q}note-container`,infoContainer:`${q}info-container`,infoPage:`${q}info-page`,infoPageText:`${q}info-page-text`,infoPagePrev:`${q}info-page-prev`,infoPageNext:`${q}info-page-next`,infoTime:`${q}info-time`,infoTimer:`${q}info-timer`},U=e=>{const{title:t}=document;document.title="[Presenter view]"+(t?` - ${t}`:"");const n={},r=e=>(n[e]=n[e]||document.querySelector(`.${e}`),n[e]);document.body.appendChild((e=>{const t=document.createElement("div");return t.className=_.container,t.appendChild(e),t.insertAdjacentHTML("beforeend",D(M,null,D("div",{class:_.nextContainer},D("iframe",{class:_.next,src:"?view=next"})),D("div",{class:_.noteContainer}),D("div",{class:_.infoContainer},D("div",{class:_.infoPage},D("button",{class:_.infoPagePrev,tabindex:"-1",title:"Previous"},"Previous"),D("span",{class:_.infoPageText}),D("button",{class:_.infoPageNext,tabindex:"-1",title:"Next"},"Next")),D("time",{class:_.infoTime,title:"Current time"}),D("div",{class:_.infoTimer})))),t})(e.parent)),(e=>{r(_.nextContainer).addEventListener("click",(()=>e.next()));const t=r(_.next),n=(o=t,(e,t)=>{var n;return null===(n=o.contentWindow)||void 0===n?void 0:n.postMessage(`navigate:${e},${t}`,"null"===window.origin?"*":window.origin)});var o;t.addEventListener("load",(()=>{r(_.nextContainer).classList.add("active"),n(e.slide(),e.fragmentIndex),e.on("fragment",(({index:e,fragmentIndex:t})=>n(e,t)))}));const a=document.querySelectorAll(".bespoke-marp-note");a.forEach((e=>{e.addEventListener("keydown",(e=>e.stopPropagation())),r(_.noteContainer).appendChild(e)})),e.on("activate",(()=>a.forEach((t=>t.classList.toggle("active",t.dataset.index==e.slide()))))),e.on("activate",(({index:t})=>{r(_.infoPageText).textContent=`${t+1} / ${e.slides.length}`}));const i=r(_.infoPagePrev),s=r(_.infoPageNext);i.addEventListener("click",(t=>{i.blur(),e.prev({fragment:!t.shiftKey})})),s.addEventListener("click",(t=>{s.blur(),e.next({fragment:!t.shiftKey})})),e.on("fragment",(({index:t,fragments:n,fragmentIndex:r})=>{i.disabled=0===t&&0===r,s.disabled=t===e.slides.length-1&&r===n.length-1}));const l=()=>r(_.infoTime).textContent=(new Date).toLocaleTimeString();l(),setInterval(l,250)})(e)},V=e=>{if(!(e=>e.syncKey&&"string"==typeof e.syncKey)(e))throw new Error("The current instance of Bespoke.js is invalid for Marp bespoke presenter plugin.");Object.defineProperties(e,{openPresenterView:{enumerable:!0,value:X},presenterUrl:{enumerable:!0,get:F}}),d&&document.addEventListener("keydown",(t=>{"p"!==t.key||t.altKey||t.ctrlKey||t.metaKey||(t.preventDefault(),e.openPresenterView())}))};function X(){const{max:e,floor:t}=Math,n=e(t(.85*window.innerWidth),640),r=e(t(.85*window.innerHeight),360);return window.open(this.presenterUrl,q+this.syncKey,`width=${n},height=${r},menubar=no,toolbar=no`)}function F(){const e=new URLSearchParams(location.search);return e.set("view","presenter"),e.set("sync",this.syncKey),i(e)}const B=e=>{const t=s();return t===r&&e.appendChild(document.createElement("span")),{"":V,[n]:U,[r]:I}[t]},R=e=>{e.on("activate",(t=>{document.querySelectorAll(".bespoke-progress-parent > .bespoke-progress-bar").forEach((n=>{n.style.flexBasis=100*t.index/(e.slides.length-1)+"%"}))}))},j=e=>{const t=Number.parseInt(e,10);return Number.isNaN(t)?null:t},H=(e={})=>{const t={history:!0,...e};return e=>{let n=!0;const r=e=>{const t=n;try{return n=!0,e()}finally{n=t}},o=(t={fragment:!0})=>{((t,n)=>{const{min:r,max:o}=Math,{fragments:a,slides:i}=e,s=o(0,r(t,i.length-1)),l=o(0,r(n||0,a[s].length-1));s===e.slide()&&l===e.fragmentIndex||e.slide(s,{fragment:l})})((j(location.hash.slice(1))||1)-1,t.fragment?j(l("f")||""):null)};e.on("fragment",(({index:e,fragmentIndex:r})=>{n||c({f:0===r||r.toString()},{location:{...location,hash:`#${e+1}`},setter:(...e)=>t.history?history.pushState(...e):history.replaceState(...e)})})),setTimeout((()=>{o(),window.addEventListener("hashchange",(()=>r((()=>{o({fragment:!1}),c({f:void 0})})))),window.addEventListener("popstate",(()=>{n||r((()=>o()))})),n=!1}),0)}},Y=(e={})=>{var n;const r=e.key||(null===(n=window.history.state)||void 0===n?void 0:n.marpBespokeSyncKey)||Math.random().toString(36).slice(2),o=`bespoke-marp-sync-${r}`;var a;a={marpBespokeSyncKey:r},c({},{setter:(e,...n)=>t({...e,...a},...n)});const i=()=>{const e=f(o);return e?JSON.parse(e):Object.create(null)},s=e=>{const t=i(),n={...t,...e(t)};return u(o,JSON.stringify(n)),n},l=()=>{window.removeEventListener("pageshow",l),s((e=>({reference:(e.reference||0)+1})))};return e=>{l(),Object.defineProperty(e,"syncKey",{value:r,enumerable:!0});let t=!0;setTimeout((()=>{e.on("fragment",(e=>{t&&s((()=>({index:e.index,fragmentIndex:e.fragmentIndex})))}))}),0),window.addEventListener("storage",(n=>{if(n.key===o&&n.oldValue&&n.newValue){const r=JSON.parse(n.oldValue),o=JSON.parse(n.newValue);if(r.index!==o.index||r.fragmentIndex!==o.fragmentIndex)try{t=!1,e.slide(o.index,{fragment:o.fragmentIndex})}finally{t=!0}}}));const n=()=>{const{reference:e}=i();void 0===e||e<=1?m(o):s((()=>({reference:e-1})))};window.addEventListener("pagehide",(e=>{e.persisted&&window.addEventListener("pageshow",l),n()})),e.on("destroy",n)}},{PI:J,abs:W,sqrt:z,atan2:G}=Math,Q={passive:!0},Z=({slope:e=-.7,swipeThreshold:t=30}={})=>n=>{let r;const o=n.parent,a=e=>{const t=o.getBoundingClientRect();return{x:e.pageX-(t.left+t.right)/2,y:e.pageY-(t.top+t.bottom)/2}};o.addEventListener("touchstart",(({touches:e})=>{r=1===e.length?a(e[0]):void 0}),Q),o.addEventListener("touchmove",(e=>{if(r)if(1===e.touches.length){e.preventDefault();const t=a(e.touches[0]),n=t.x-r.x,o=t.y-r.y;r.delta=z(W(n)**2+W(o)**2),r.radian=G(n,o)}else r=void 0})),o.addEventListener("touchend",(o=>{if(r){if(r.delta&&r.delta>=t&&r.radian){const t=(r.radian-e+J)%(2*J)-J;n[t<0?"next":"prev"](),o.stopPropagation()}r=void 0}}),Q)},ee="_tA",te=e=>{const t=document.documentTransition;if(!t)return;let n;e._tP=!1;const r=(n,{back:r,cond:o})=>a=>{const i=e.slides[e.slide()].querySelector("section[data-transition]");if(!i)return!0;const s=document.querySelector(".bespoke-marp-osc"),l=s?[s]:void 0;if(e._tP){if(a._tA){e._tP=!1;try{t.start({sharedElements:l}).catch((()=>{}))}catch(e){}return!0}}else{if(!o(a))return!0;e._tP=t.prepare({rootTransition:a.back||r?i.dataset.transitionBack:i.dataset.transition,sharedElements:l}).then((()=>n(a))).catch((()=>n(a)))}return!1};e.on("prev",r((t=>e.prev({...t,[ee]:!0})),{back:!0,cond:e=>{var t;return e.index>0&&!((null===(t=e.fragment)||void 0===t||t)&&n.fragmentIndex>0)}})),e.on("next",r((t=>e.next({...t,[ee]:!0})),{cond:t=>t.index+1<e.slides.length&&!(n.fragmentIndex+1<n.fragments.length)})),setTimeout((()=>{e.on("slide",r((t=>e.slide(t.index,{...t,[ee]:!0})),{cond:t=>{const n=e.slide();return t.index!==n&&(t.back=t.index<n,!0)}}))}),0),e.on("fragment",(e=>{n=e}))};let ne;const re=()=>(void 0===ne&&(ne="wakeLock"in navigator&&navigator.wakeLock),ne),oe=async()=>{const e=re();if(e)try{return await e.request("screen")}catch(e){console.warn(e)}return null},ae=async()=>{if(!re())return;let e;const t=()=>{e&&"visible"===document.visibilityState&&oe()};for(const e of["visibilitychange","fullscreenchange"])document.addEventListener(e,t);return e=await oe(),e};((t=document.getElementById("p"))=>{(()=>{const t=l("view");e.dataset.bespokeView=t===r||t===n?t:""})();const a=(e=>{const t=l(e);return c({[e]:void 0}),t})("sync")||void 0;var i,d,f,u,m,g,h,y,x,b,E,I;i=t,d=((...e)=>{const t=o.findIndex((e=>s()===e));return e.map((([e,n])=>e[t]&&n)).filter((e=>e))})([[1,1,0],Y({key:a})],[[1,1,1],B(t)],[[1,1,0],L],[[1,1,1],p],[[1,0,0],k()],[[1,1,1],$],[[1,1,1],H({history:!1})],[[1,1,0],P()],[[1,1,0],w],[[1,0,0],R],[[1,1,0],Z()],[[1,0,0],S()],[[1,0,0],te],[[1,1,1],v],[[1,1,0],ae]),u=1===(i.parent||i).nodeType?i.parent||i:document.querySelector(i.parent||i),m=[].filter.call("string"==typeof i.slides?u.querySelectorAll(i.slides):i.slides||u.children,(function(e){return"SCRIPT"!==e.nodeName})),g={},h=function(e,t){return(t=t||{}).index=m.indexOf(e),t.slide=e,t},b=function(e,t){m[e]&&(f&&x("deactivate",h(f,t)),f=m[e],x("activate",h(f,t)))},E=function(e,t){var n=m.indexOf(f)+e;x(e>0?"next":"prev",h(f,t))&&b(n,t)},I={off:y=function(e,t){g[e]=(g[e]||[]).filter((function(e){return e!==t}))},on:function(e,t){return(g[e]||(g[e]=[])).push(t),y.bind(null,e,t)},fire:x=function(e,t){return(g[e]||[]).reduce((function(e,n){return e&&!1!==n(t)}),!0)},slide:function(e,t){if(!arguments.length)return m.indexOf(f);x("slide",h(m[e],t))&&b(e,t)},next:E.bind(null,1),prev:E.bind(null,-1),parent:u,slides:m,destroy:function(e){x("destroy",h(f,e)),g={}}},(d||[]).forEach((function(e){e(I)})),f||b(0)})()}();</script></body></html>